Skip to main content

🛎 Test-import all modules 🛎

Project description

🛎 Test-import all modules 🛎

Individually and separately imports each Python module or file in a project and reports warnings or failures at the end.

Running impall as a unit test

Just inherit from the base class and it will automatically find and import each file, like this.

import impall

class ImpAllTest(impall.ImpAllTest):
    pass

(You can copy this file into your project if you like.)

Tests are customized by overriding one of these following properties in the derived class.

CLEAR_SYS_MODULES, EXCLUDE, FAILING, INCLUDE, MODULES, PATHS,
RAISE_EXCEPTIONS, and WARNINGS_ACTION.

For example, to turn warnings into errors, set the property WARNINGS_ACTION in the derived class definition, like this.

class ImpAllTest(impall.ImpAllTest):
    WARNINGS_ACTION = 'error'

Running impall as a command-line utility

$ impall --warnings_action=error
$ impall -w error

The properties INCLUDE, EXCLUDE, and PROJECT_PATH can be lists of strings, or a string separated with colons like 'foo.mod1:foo.mod2'

INCLUDE and EXCLUDE match modules, and also allow * as a wildcard. A single * matches any module segment, and a double ** matches any remaining segments. For example,

INCLUDE = 'foo', 'bar.*', 'baz.**'

  • matches foo but not foo.foo
  • matches bar.foo but not bar or bar.foo.bar
  • matches baz.foo as well as baz.foo.bar but not baz

A note on side-effects

to reduce side-effects, sys.modules is restored to its original condition after each import if CLEAR_SYS_MODULES is true, but there might be other side-effects from loading some specific module.

Use the EXCLUDE property to exclude modules with undesirable side effects. In general, it is probably a bad idea to have significant side-effects just from loading a module.

API Documentation

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

impall-1.9.0.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

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

impall-1.9.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file impall-1.9.0.tar.gz.

File metadata

  • Download URL: impall-1.9.0.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for impall-1.9.0.tar.gz
Algorithm Hash digest
SHA256 9479153d591b105f9dc11c7840d2d6406667172cb78e21d1b28c0df89eca70b2
MD5 7149cd9e8375ae47fa53abe6f33c63fd
BLAKE2b-256 880c3a2712be5ce13411cf3a739c9d2a075d30fdace009c0049b5a6783a372e8

See more details on using hashes here.

File details

Details for the file impall-1.9.0-py3-none-any.whl.

File metadata

  • Download URL: impall-1.9.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for impall-1.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0b941d66d63687ca775f9c4c309c3660915b992164a0620043e78aa25fd5af8c
MD5 858f77507597d60ae4dd83a657dd6087
BLAKE2b-256 10c29fda30f2995ec2172025eb6e8be0535be8e9db45f74da73664f1735cef72

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