Skip to main content

Dummy package to mark extras installation

Project description

extras

PyPI PyPI - Python Version Code style: black EditorConfig

Package that allows to make assertions about extras being installed or not.

For the detailed explanation read this blog post.

Usage

For the pyproject.toml users

[tool.poetry.dependencies]
package-extras = { version = "^0.2.0", optional = true }
# your actual extras below
psycopg2 = { version = "^2.9", optional = true }
mysqlclient = { version = "^1.3", optional = true }

[tool.poetry.extras]
databases = ["package-extras", "mysqlclient", "psycopg2"]

setup.py equivalent

extras_require = \
{'databases': ['package-extras>=0.2.0',
               'psycopg2>=2.9,<3.0',
               'mysqlclient>=1.3,<2.0']}

setup_kwargs = {
    # ... rest of the arguments
    'extras_require': extras_require,
}
setup(**setup_kwargs)

Add this or similar block to your code (likely top-level __init__.py file)

import warnings

try:
    import package_extras
except ModuleNotFoundError:
    pass
else:
    warnings.warn(
        "'test_package[databases]' extra is deprecated "
        "and will be removed in a future release.",
        category=DeprecationWarning,
        stacklevel=2,
    )

Or in case you want to assert the opposite (make sure that extras have been installed)

import warnings

try:
    import package_extras
except ModuleNotFoundError:
    warnings.warn(
        "You are going to use functionality that depends on 'databases' extras. "
        "Please install 'test_package[databases]' to proceed.",
        category=ImportWarning,
        stacklevel=2,
    )

NOTE: ImportWarning is ignored by default, so you either need to run python -W all or use RuntimeWarning instead.

After installation via pip install test_package[databases] your package users will get this warning.

>>> import test_package
DeprecationWarning: 'test_package[databases]' extra is deprecated and will be removed in a future release.

Development

$ poetry install
$ poetry build

$ poetry config pypi-token.pypi my-token
$ poetry publish

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

package-extras-0.3.0.tar.gz (2.4 kB view details)

Uploaded Source

Built Distribution

package_extras-0.3.0-py3-none-any.whl (2.2 kB view details)

Uploaded Python 3

File details

Details for the file package-extras-0.3.0.tar.gz.

File metadata

  • Download URL: package-extras-0.3.0.tar.gz
  • Upload date:
  • Size: 2.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.10.6 Linux/5.14.0-1054-oem

File hashes

Hashes for package-extras-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b84ec71a5ae28448d389d3ae0d62be13e98ccb155ebf27dc679e25fbe5b23e82
MD5 041eab90a88d7af14704155175e537c2
BLAKE2b-256 731a342e0b1d90d69ef13cafb4cb3cafb7f801e941a87a6a37374898e59e0b58

See more details on using hashes here.

File details

Details for the file package_extras-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: package_extras-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 2.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.10.6 Linux/5.14.0-1054-oem

File hashes

Hashes for package_extras-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7e2ea8d9473be667105da6e0ac8044582fc42ab84ca72516d2f916d13b56844
MD5 9fbb1cf87d935776810467e5172af69f
BLAKE2b-256 34f6ab6717c21541012248de0cb5154781f4d7c163271f908e6b9978a6c29dc0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page