{"id":23344385,"url":"https://github.com/rec/impall","last_synced_at":"2026-05-20T19:11:05.035Z","repository":{"id":62570742,"uuid":"178041298","full_name":"rec/impall","owner":"rec","description":"🛎 Test-import all modules 🛎","archived":false,"fork":false,"pushed_at":"2024-03-20T18:25:09.000Z","size":723,"stargazers_count":8,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-08T23:35:42.700Z","etag":null,"topics":["python","testing","testing-tools","tools"],"latest_commit_sha":null,"homepage":"https://rec.github.io/impall/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rec.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELIST","contributing":null,"funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"rec"}},"created_at":"2019-03-27T17:14:50.000Z","updated_at":"2025-02-26T17:52:01.000Z","dependencies_parsed_at":"2023-07-13T04:15:26.269Z","dependency_job_id":"32cdfb9b-3e70-4ffa-8ecc-01a98d76c47a","html_url":"https://github.com/rec/impall","commit_stats":{"total_commits":114,"total_committers":1,"mean_commits":114.0,"dds":0.0,"last_synced_commit":"c38722eaa81a1285d4efa2a9967d068121a50186"},"previous_names":["rec/import_all"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rec%2Fimpall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rec%2Fimpall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rec%2Fimpall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rec%2Fimpall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rec","download_url":"https://codeload.github.com/rec/impall/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947823,"owners_count":21023058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","testing","testing-tools","tools"],"created_at":"2024-12-21T06:26:29.955Z","updated_at":"2026-05-20T19:11:05.002Z","avatar_url":"https://github.com/rec.png","language":"Python","funding_links":["https://github.com/sponsors/rec"],"categories":[],"sub_categories":[],"readme":"# 🛎 Test-import all modules 🛎\n\nIndividually and separately imports each Python module or file in a project and\nreports warnings or failures at the end.\n\n### Running impall as a unit test\n\nJust inherit from the base class and it will\nautomatically find and import each file, like this.\n\n    import impall\n\n    class ImpAllTest(impall.ImpAllTest):\n        pass\n\n(You can copy\n[this file](https://github.com/rec/impall/blob/master/all_test.py)\ninto your project if you like.)\n\nTests are customized by overriding one of these following properties in the\nderived class.\n\n    CLEAR_SYS_MODULES, EXCLUDE, FAILING, INCLUDE, MODULES, PATHS,\n    RAISE_EXCEPTIONS, and WARNINGS_ACTION.\n\nFor example, to turn warnings into errors, set the property\nWARNINGS_ACTION in the derived class definition, like this.\n\n    class ImpAllTest(impall.ImpAllTest):\n        WARNINGS_ACTION = 'error'\n\n## Running impall as a command-line utility\n\n    $ impall --warnings_action=error\n    $ impall -w error\n\nThe properties INCLUDE, EXCLUDE, and PROJECT_PATH can be\nlists of strings, or a string separated with colons like\n'foo.mod1:foo.mod2'\n\nINCLUDE and EXCLUDE match modules, and also allow * as a wildcard.\nA single * matches any module segment, and a double ** matches any\nremaining segments. For example,\n\n`INCLUDE = 'foo', 'bar.*', 'baz.**'`\n\n* matches `foo` but not `foo.foo`\n* matches `bar.foo` but not `bar` or `bar.foo.bar`\n* matches `baz.foo` as well as `baz.foo.bar` but not `baz`\n\n### A note on side-effects\n\nto reduce side-effects, `sys.modules` is restored to its original\ncondition after each import if CLEAR_SYS_MODULES is true, but there might be\nother side-effects from loading some specific module.\n\nUse the EXCLUDE property to exclude modules with undesirable side\neffects. In general, it is probably a bad idea to have significant\nside-effects just from loading a module.\n\n### [API Documentation](https://rec.github.io/impall#impall--api-documentation)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frec%2Fimpall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frec%2Fimpall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frec%2Fimpall/lists"}