Skip to main content

midir is a Python library designed to handle relative module dependencies by

Project description

midir

A library for resolving relative module dependencies.

Description

midir is a Python library designed to handle relative module dependencies by resolving directory paths in an intelligent and system-agnostic way. This library can be used to introspect the file structure of your project and manipulate Python's sys.path, allowing for dynamic module imports based on directory hierarchy. It is especially helpful for larger projects where file structure can become complex and static imports cumbersome to manage.

Features

  1. get_caller() -> str: Returns the name of the file or the location (directory) where the current execution point is present.

  2. mipath(path: str = None) -> str | Path: Returns the canonical (absolute) path of the current execution point or a provided path.

  3. midir(path: str = None) -> str | Path: Returns the directory name where the current execution point is or from a provided path.

  4. root_levels(levels: int = 1) -> None: Makes directories available for import by adding them to sys.path. It starts from directory of the caller file and move up the directory hierarchy. The number of levels up to move is determined by input argument.

  5. root_suffix(suffix: str) -> None: Similar to root_levels, but instead of moving up a certain number of directories, it continues to move up until it finds a directory whose name ends with the provided suffix and adds that directory to sys.path.

  6. lsdir(path: str) -> List[str]: This function retrieves a sorted list of file and/or folder names from a specified directory path. Whether it returns file or folder names depends on the parameters set. It returns the full path of these files/folders if requested. Custom filter conditions can be applied. Raises errors if path isn't found or if no output requirements are specified. A warning is given if both file and folder parameters are set to true while a custom filter function is also specified.

Exceptions

  1. FolderNotFoundError: Custom exception raised when no folder matching the required conditions (in root_suffix) is found in the directory hierarchy.

Testing

cd midir
source bin/activate
pytest .
cd midir
source bin/activate
python -m tests.test_unit

Build instructions

  1. Building the package before uploading: 'python -m build' (from "midir").
  2. Upload the package to pypi: 'python -m twine upload --repository pypi dist/*'
  3. Install the package from pypi: 'python -m pip install midir'
  4. If any dependencies are required, edit the pyproject.toml file, "[project]" field, and add a dependencies key with a List\[str\] value, where each string is a pip-readable dependency.

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

midir-1.2.1.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

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

midir-1.2.1-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file midir-1.2.1.tar.gz.

File metadata

  • Download URL: midir-1.2.1.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for midir-1.2.1.tar.gz
Algorithm Hash digest
SHA256 2d635129ccc427d63fad31880840c1c8798a94fe3e07a8c9f25f5547f1624a5e
MD5 0cbdf4d6d471f51b2715fd27f452c418
BLAKE2b-256 022f055f62cca0ed697f1fe4aeb0f22a615d3e260b43b818720c313baeecc59c

See more details on using hashes here.

File details

Details for the file midir-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: midir-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for midir-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bb57043b373295c0cae14bbc7a110d6c99bd957b2e83caa1be1a69ac25de0377
MD5 fd52ba15aa8ebd0718969ccf033fc92d
BLAKE2b-256 861f4c67482ed0e17f29b380a1c62f86252c64cb5fd9d8c9b32a10ae9a0a6555

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