Skip to main content

No project description provided

Project description

Helps to prevent import of certain modules from certain modules.

It's useful if you have many modules in your project and want to keep them kind of isolated.

After installing just add import-rules option to your setup.cfg file.

[flake8]
...
import-rules= 
	# yaml format here
	- module_one: [
		module_two allow,
		any deny
	]
	- module_two: [
		module_one.sub.submodule deny
	]
	- module_two.sumbodule: module_one deny
	- module_three: any allow

	# many section for the same module are allowed
	# for example
	- module_two: [
		deny some_other_module
	]

	# this will prevent any import everywhere
	- any: [
		any deny
	]

	# default behaviour is
	- any: [
		any allow
	]

	# For each module (among foo bar baz) allow import from self submodules 
	# and top module of others but not from submodules
	- X | Y | foo | bar | baz : [
		Y.ANY deny,
		Y     allow,
		X 	  allow

	]

...

Rules are checking top-down. The Order Matters.

If current module name match section name or is submodule, then it will check all imports by rules from the section.

There can be one or more rules in section. There can be one or more sections for the same module/submodule.

modulepath allow - means allow imports from modulepath and its submodules

modulepath deny - means deny imports from modulepath and its submodules.

Keyword any or ANY or all or ALL - menas any module (like *)

To combine different module paths in one rule we can use | symbol. For example to define rule for foo.hi foo.low bar.hi bar.low we can use foo|bar.hi|low .

We can "define" variable that will be valid only during one section and its rules.

A | B | foo | bar | baz : [
	...
]

means if current module name is foo or bar or baz then A is equal to current module name and B will correspond other names from group foo|bar|baz without current module name.

Variable name can be only single uppercase character. You can use variable name in section rule and inside section.

You can use variables for different module level for example

X|mod_a|mod_b.domain.Y : [
	X.infra.Y allow
	X.infra.ANY deny
]

CAUTION. As .INI configparser ignores indentation use [ ... , .. ] flow for lists as in example.

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

flake8_import_rules-1.0.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

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

flake8_import_rules-1.0.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file flake8_import_rules-1.0.0.tar.gz.

File metadata

  • Download URL: flake8_import_rules-1.0.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.8.5 Linux/5.4.0-84-generic

File hashes

Hashes for flake8_import_rules-1.0.0.tar.gz
Algorithm Hash digest
SHA256 39b53226ed4945ccb2cf6e888fb2f6d3c0c41a1f8eb0aa7a47f9a65e2f49dcbf
MD5 0b997b6f6de7a6778215f88a80e24799
BLAKE2b-256 a1bcafc7227c5508b8ba1582202b2455b65b0979c6986cc2aa3be69fc243215b

See more details on using hashes here.

File details

Details for the file flake8_import_rules-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: flake8_import_rules-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.8.5 Linux/5.4.0-84-generic

File hashes

Hashes for flake8_import_rules-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c13d6dbdc202f3b925392da0ab9b112418da72f4f30a85a121c07cc65831cb55
MD5 2a441c879c5d4949f4c41cfb891d1700
BLAKE2b-256 8ebf59b8814d23995b1890268c8e4f9da326211037d7dbfba5a64dfcb3ac2d8e

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