pylint-restricted-imports
=========================
About
`````
``pylint-restricted-imports`` is `Pylint`_ plugin for restricting
what imports are allowed in specific module trees.
Want to prevent django from being imported in a flask app? This plugin is for you!
.. _Pylint: http://pylint.org
Usage
`````
Ensure ``pylint-restricted-imports`` is installed and on your path, and then run pylint using
pylint-restricted-imports as a plugin::
pip install pylint-restricted-imports
pylint --load-plugins pylint_restricted_imports [..your module..]
Configuration
`````````````
Before the plugin will do anything, it needs configuring.
You can use pylint to generate the default configuration::
pylint --load-plugins pylint_restricted_imports --generate-rcfile
You will end up with a block similar to below::
[RESTRICTED-IMPORT]
# Colon/semicolon-delimited sets of names that determine what modules are
# allowed to be imported from another module
restricted-imports=
# Check restricted imports recursively
restricted-import-recurse=no
Restricted Imports
''''''''''''''''''
``restricted-imports`` is a csv list of module/restricted imports. The format is ``<module>:<restricted module>;...``.
For example, the following would prevent ``restricted1`` and ``restricted2`` from being imported in `module1` and
``restricted3`` and ``restricted4`` from being imported in ``module2``::
module1:restricted1;restricted2,module2:fordibben3;restricted4
Recursion
'''''''''
You can enable the transitive detection of restricted imports, however this takes a lot
more compute.
For example, if have the following files::
# flask_app.py
import flask
import common_utils
# common_utils.py
import django
If ``flask_app`` is not allowed to import django, the transitive checker would throw an error
because importing ``common_utils`` would cause ``django`` to be imported, which is restricted.
Raw data
{
"_id": null,
"home_page": "https://github.com/pexip/pylint-restricted-imports",
"name": "pylint-restricted-imports",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "pylint, plugin, imports",
"author": "Pexip AS",
"author_email": "packaging@pexip.com",
"download_url": "https://files.pythonhosted.org/packages/07/93/85c75d7da4b100fb420ff4bd5afd48c2ab116870fd91f7a802e21b32e1b4/pylint_restricted_imports-0.2.2.tar.gz",
"platform": null,
"description": "pylint-restricted-imports\n=========================\n\nAbout\n`````\n\n``pylint-restricted-imports`` is `Pylint`_ plugin for restricting\nwhat imports are allowed in specific module trees.\nWant to prevent django from being imported in a flask app? This plugin is for you!\n\n.. _Pylint: http://pylint.org\n\nUsage\n`````\n\nEnsure ``pylint-restricted-imports`` is installed and on your path, and then run pylint using\npylint-restricted-imports as a plugin::\n\n pip install pylint-restricted-imports\n pylint --load-plugins pylint_restricted_imports [..your module..]\n\nConfiguration\n`````````````\n\nBefore the plugin will do anything, it needs configuring.\nYou can use pylint to generate the default configuration::\n\n pylint --load-plugins pylint_restricted_imports --generate-rcfile\n\nYou will end up with a block similar to below::\n\n [RESTRICTED-IMPORT]\n # Colon/semicolon-delimited sets of names that determine what modules are\n # allowed to be imported from another module\n restricted-imports=\n\n # Check restricted imports recursively\n restricted-import-recurse=no\n\nRestricted Imports\n''''''''''''''''''\n``restricted-imports`` is a csv list of module/restricted imports. The format is ``<module>:<restricted module>;...``.\nFor example, the following would prevent ``restricted1`` and ``restricted2`` from being imported in `module1` and\n``restricted3`` and ``restricted4`` from being imported in ``module2``::\n\n module1:restricted1;restricted2,module2:fordibben3;restricted4\n\nRecursion\n'''''''''\nYou can enable the transitive detection of restricted imports, however this takes a lot\nmore compute.\n\nFor example, if have the following files::\n\n # flask_app.py\n import flask\n import common_utils\n\n # common_utils.py\n import django\n\nIf ``flask_app`` is not allowed to import django, the transitive checker would throw an error\nbecause importing ``common_utils`` would cause ``django`` to be imported, which is restricted.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "pylint-restricted-imports is a Pylint plugin to restrict what imports are allowed in different modules",
"version": "0.2.2",
"project_urls": {
"Homepage": "https://github.com/pexip/pylint-restricted-imports",
"Repository": "https://github.com/pexip/pylint-restricted-imports"
},
"split_keywords": [
"pylint",
" plugin",
" imports"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6134296c746d3617d5f506873c9d2558052a872133aaa4add4d8cabdfdcb29ac",
"md5": "47cd67cb10e3a461d67ff4e42b41f89f",
"sha256": "1a0dfdb9a9a2370d8b22263be83c974d9fcebe9abdf7dd29f020f4c26bb476d9"
},
"downloads": -1,
"filename": "pylint_restricted_imports-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "47cd67cb10e3a461d67ff4e42b41f89f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 4811,
"upload_time": "2024-07-25T15:38:08",
"upload_time_iso_8601": "2024-07-25T15:38:08.196464Z",
"url": "https://files.pythonhosted.org/packages/61/34/296c746d3617d5f506873c9d2558052a872133aaa4add4d8cabdfdcb29ac/pylint_restricted_imports-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "079385c75d7da4b100fb420ff4bd5afd48c2ab116870fd91f7a802e21b32e1b4",
"md5": "0734318a7be639ccb7d907012e56ebb4",
"sha256": "7eef7309b4391091e2ceca81bc0cca5b6063bc2b381d6b39f8eb2118795c3d15"
},
"downloads": -1,
"filename": "pylint_restricted_imports-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "0734318a7be639ccb7d907012e56ebb4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 4260,
"upload_time": "2024-07-25T15:38:09",
"upload_time_iso_8601": "2024-07-25T15:38:09.620622Z",
"url": "https://files.pythonhosted.org/packages/07/93/85c75d7da4b100fb420ff4bd5afd48c2ab116870fd91f7a802e21b32e1b4/pylint_restricted_imports-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-25 15:38:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pexip",
"github_project": "pylint-restricted-imports",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pylint-restricted-imports"
}