Skip to main content

Import top-level modules from a directory not on `sys.path`

Project description

qualify

A Python package that allows you to import top-level modules which reside in a directory that is not on sys.path.

Rationale

This is for scenarios where you have a collection of top-level modules but you want to keep their parent directory off sys.path.

Example:

You have a directory d that contains two top-level modules with the rather generic names main and utils. You want to import these modules but also keep their parent directory d off sys.path to keep the global namespace of top-level modules from being polluted with these generic names.

However, main refers to utils by its top-level name. So if you just run import d.main, you’d get an error:

ModuleNotFoundError: No module named 'utils'

Running enable_submodules('d') will allow you to import d.main successfully.

Running import d.main will add the following modules to sys.modules:

  • d
  • d.main
  • d.utils

Note that unlike similar implementations, the python_qualify package does not touch sys.path. This helps prevent unwanted modules from being exposed to the global namespace.

Installation

Installing from PyPI

To install qualify from PyPI, open a shell and run:

pip install python-qualify

If that doesn’t work, try:

python3 -m pip install python-qualify

Installing from the AUR

Direct your favorite AUR helper to the python-qualify package.

Usage

See USAGE.md or man python_qualify for details.

Contributing to qualify

See CONTRIBUTING.md.

License

Copyright (c) 2024 Claudia Pellegrino

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. For a copy of the License, see LICENSE.

Configuration

Paste into __init__.py of the affected package:

import python_qualify
python_qualify.enable_submodules(__name__)

Description

A Python package that allows you to import top-level modules which reside in a directory that is not on sys.path.

This is for scenarios where you have a collection of top-level modules but you want to keep their parent directory off sys.path.

Example

You have a directory d that contains two top-level modules with the rather generic names main and utils. You want to import these modules but also keep their parent directory d off sys.path to keep the global namespace of top-level modules from being polluted with these generic names.

However, main refers to utils by its top-level name. So if you just run import d.main, you’d get an error:

ModuleNotFoundError: No module named 'utils'

Running enable_submodules('d') will allow you to import d.main successfully.

Notes

Running import d.main will add the following modules to sys.modules:

  • d
  • d.main
  • d.utils

Note that unlike similar implementations, the python_qualify package does not touch sys.path. This helps prevent unwanted modules from being exposed to the global namespace.

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

python_qualify-0.1.1.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_qualify-0.1.1-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file python_qualify-0.1.1.tar.gz.

File metadata

  • Download URL: python_qualify-0.1.1.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for python_qualify-0.1.1.tar.gz
Algorithm Hash digest
SHA256 66ed4dfd7eca09388542f37dc4b0274a925eead5e6e2d7f7e3424428ae11ea03
MD5 f47082d43697558734d717ed77e54514
BLAKE2b-256 9ce5ad08a2bf948b648089ec39c1cc36b128fc465a266298bbb525b823497bbe

See more details on using hashes here.

File details

Details for the file python_qualify-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: python_qualify-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for python_qualify-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fb51b95b956afd2a024fea91c474fb430f113ca911afb19fe088575636b1e20c
MD5 0d95e57adad177932a900612421c6155
BLAKE2b-256 e152a0dbe4e00176304f1ce5a5440db003b4188bf416803a3c8c5460e59f3d22

See more details on using hashes here.

Supported by

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