Skip to content

Instantly share code, notes, and snippets.

@miketheman
Forked from benkehoe/package_with_single_sourced_version.py
Last active March 20, 2021 23:22

Revisions

  1. miketheman revised this gist Mar 20, 2021. 1 changed file with 4 additions and 6 deletions.
    10 changes: 4 additions & 6 deletions my_package.py
    Original file line number Diff line number Diff line change
    @@ -1,13 +1,11 @@
    try:
    # importlib.metadata is present in Python 3.8 and later
    from importlib.metadata import version as _get_version
    from importlib.metadata import PackageNotFoundError as _PackageNotFoundError
    import importlib.metadata as importlib_metadata
    except ImportError:
    # use the shim package importlib-metadata pre-3.8
    from importlib_metadata import version as _get_version
    from importlib_metadata import PackageNotFoundError as _PackageNotFoundError
    import importlib_metadata as importlib_metadata

    try:
    __version__ = _get_version(__package__ or __name__)
    except _PackageNotFoundError:
    __version__ = importlib_metadata.version(__package__ or __name__)
    except importlib_metadata.PackageNotFoundError:
    __version__ = "0.0.0"
  2. Ben Kehoe revised this gist Mar 20, 2021. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions my_package.py
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,9 @@
    try:
    # importlib.metadata is present in Python 3.8 and later
    from importlib.metadata import version as _get_version
    from importlib.metadata import PackageNotFoundError as _PackageNotFoundError
    except ImportError:
    # use the shim package importlib-metadata pre-3.8
    from importlib_metadata import version as _get_version
    from importlib_metadata import PackageNotFoundError as _PackageNotFoundError

  3. Ben Kehoe created this gist Mar 20, 2021.
    11 changes: 11 additions & 0 deletions my_package.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    try:
    from importlib.metadata import version as _get_version
    from importlib.metadata import PackageNotFoundError as _PackageNotFoundError
    except ImportError:
    from importlib_metadata import version as _get_version
    from importlib_metadata import PackageNotFoundError as _PackageNotFoundError

    try:
    __version__ = _get_version(__package__ or __name__)
    except _PackageNotFoundError:
    __version__ = "0.0.0"
    27 changes: 27 additions & 0 deletions pyproject.toml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    ### poetry ###
    [tool.poetry]
    name = "my_package"
    version = "1.2.3"

    # add this in addition to whatever else you've got in here
    [tool.poetry.dependencies]
    importlib-metadata = { version = "~=1.0", python = "<3.8" }

    ### setuptools ###
    [metadata]
    name = "my_package"
    version = "1.2.3"

    # add this in addition to whatever else you've got in here
    [options]
    install_requires = "importlib-metadata ~= 1.0 ; python_version < '3.8'"

    ### PEP621 ###
    [project]
    name = "my_package"
    version = "1.2.3"

    # add this in addition to whatever else you've got in here
    dependencies = [
    "importlib-metadata ~= 1.0 ; python_version < '3.8'"
    ]