Skip to main content

Latest PyPI version Build Status

Find dirs which appear to be broken python packages, i.e. dirs which contain *.py files without the necessary __init__.py

Suggested use is to run as a Pre-commit hook.

Why?

In your main code it’s unlikely to have orphan modules since they are not importable and likely a cause of visible errors.

However in your unit tests, particularly if you have a lot of tests, you may find orphans. They go undetected because while developing you maybe pass the full path to the orphan to your test runner, and it works. But when you run the full suite of tests the orphans won’t be found and so you have tests which aren’t running!

By running pyorphans as a pre-commit hook you can catch the orphans and fix them immediately.

CLI Usage

pip install pyorphans

This will install a console script pyorphans.

To run the checker, just pass it a list of the root packages in your project:

pyorphans tests myproject

It returns output like:

tests/unit
-> test_important_stuff.py

tests/integration/important_stuff
tests/integration/important_stuff/api
-> test_views.py

We can see here that tests/unit dir is missing an __init__.py but contains test_important_stuff.py

Also tests/integration/important_stuff and tests/integration/important_stuff/api dirs are both missing their __init__.py files. Inside both directories is found a single ‘orphan’ file, tests/integration/important_stuff/api/test_views.py.

Say you get an output like:

myproject/scripts
-> do_something.py

Maybe scripts is not intended to be a package and do_something.py is a perfectly good standalone script that runs from the command-line.

In this case create a .pyorphans_ignore file in the root of your project (the dir that pyorphans will be run from), containing:

myproject/scripts

Now myproject/scripts (and all its subdirs) will be excluded from the search for orphans.

Pre-commit Hook

We suggest using Pre-commit.

pip install pre-commit

Pyorphans is configured as a Pre-commit plugin. To apply it to your project, add a .pre-commit-config.yaml file to the root of your project like so:

repos:
  - repo: https://github.com/depop/pyorphans
    rev: "0.2.0"
    hooks:
    - id: pyorphans
      args:
        - myproject
        - tests

Now every time you commit, Pyorphans will run and ask you to fix any that it finds. Pyorphans runs fast so you’ll hardly notice it’s there!

Release files for pyorphans 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyorphans 0.2.2
File Size Uploaded
pyorphans-0.2.2.tar.gz 4.2 kB Details

Release files / pyorphans-0.2.2.tar.gz

Download URL pyorphans-0.2.2.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
91eefe133d4258e23b6d1e767c8a3339178510f704c0fe39e7da037f176f9f57
BLAKE2b-256 checksum
How to use checksums
aefa2bc111a28eac8c53b8e98e6a5490de92d77428a0ce63086ac6aa3d7ed7ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.11

Release history Release notifications | RSS feed

This release

0.2.2 This release

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page