# Did I forget any imports?
[![pipeline status](https://gitlab.com/marvin.vanaalst/difai/badges/main/pipeline.svg)](https://gitlab.com/marvin.vanaalst/difai/-/commits/main)
[![coverage report](https://gitlab.com/marvin.vanaalst/difai/badges/main/coverage.svg)](https://gitlab.com/marvin.vanaalst/difai/-/commits/main)
[![PyPi](https://img.shields.io/pypi/v/difai)](https://pypi.org/project/difai/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
[![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
[![Downloads](https://pepy.tech/badge/difai)](https://pepy.tech/project/difai)
DIFAI searches for import statements for all the python and jupyter notebook files in the current directory. It then uses `pip freeze` to get your installed versions and `pip-compile` to generate a `requirements.txt` file containing all of your dependencies and their depdendencies including hashes for a reproducible build.
## Run
Simply call `difai` in the current folder.
You can change the input (where the `.py` and `.ipynb` files are read) and output (where the `requirement.in` and `requirements.txt` files are written) folders using
`--in-path` and `--out-path` respectively.
In order to exclude certain packages from the search, you can use the `--exclude` option.
## Pipeline
<div class="center">
```mermaid
graph TB
A[glob] --> B
A --> C
B[.py] --> D
C[.ipynb] -->|nbconvert| B
D[AST] --> E
X[pip freeze] --> E
E[requirements.in] -->|pip tools| F
F[requirements.txt]
```
</div>
Raw data
{
"_id": null,
"home_page": "https://gitlab.com/marvin.vanaalst/difai",
"name": "difai",
"maintainer": "Marvin van Aalst",
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": "marvin.vanaalst@gmail.com",
"keywords": "packaging",
"author": "Marvin van Aalst",
"author_email": "marvin.vanaalst@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/c3/10/c6bb696b3b738c0e3e5dd6df840d31784e419f78182d683f9f77c0338994/difai-0.9.64.tar.gz",
"platform": null,
"description": "# Did I forget any imports?\n\n[![pipeline status](https://gitlab.com/marvin.vanaalst/difai/badges/main/pipeline.svg)](https://gitlab.com/marvin.vanaalst/difai/-/commits/main)\n[![coverage report](https://gitlab.com/marvin.vanaalst/difai/badges/main/coverage.svg)](https://gitlab.com/marvin.vanaalst/difai/-/commits/main)\n[![PyPi](https://img.shields.io/pypi/v/difai)](https://pypi.org/project/difai/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)\n[![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)\n[![Downloads](https://pepy.tech/badge/difai)](https://pepy.tech/project/difai)\n\nDIFAI searches for import statements for all the python and jupyter notebook files in the current directory. It then uses `pip freeze` to get your installed versions and `pip-compile` to generate a `requirements.txt` file containing all of your dependencies and their depdendencies including hashes for a reproducible build.\n\n## Run\n\nSimply call `difai` in the current folder.\nYou can change the input (where the `.py` and `.ipynb` files are read) and output (where the `requirement.in` and `requirements.txt` files are written) folders using\n`--in-path` and `--out-path` respectively.\nIn order to exclude certain packages from the search, you can use the `--exclude` option.\n\n## Pipeline\n\n<div class=\"center\">\n\n```mermaid\ngraph TB\n A[glob] --> B\n A --> C\n B[.py] --> D\n C[.ipynb] -->|nbconvert| B\n D[AST] --> E\n X[pip freeze] --> E\n E[requirements.in] -->|pip tools| F\n F[requirements.txt]\n```\n\n</div>\n",
"bugtrack_url": null,
"license": "WTFPL",
"summary": "'Did I forget any imports' generates requirement files for you",
"version": "0.9.64",
"project_urls": {
"Documentation": "https://gitlab.com/marvin.vanaalst/difai",
"Homepage": "https://gitlab.com/marvin.vanaalst/difai",
"Repository": "https://gitlab.com/marvin.vanaalst/difai"
},
"split_keywords": [
"packaging"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f78b84509cd3f75552e66fd94b5fb9964ef03d14bb3ae829ae7d13fc078d1595",
"md5": "7418ab1351fd416f0739bcbc6ff9cab9",
"sha256": "ffbdbeffe5a6f037d0d8e58d84ca48ac1450acd95764760cf2d80759b0fb84b2"
},
"downloads": -1,
"filename": "difai-0.9.64-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7418ab1351fd416f0739bcbc6ff9cab9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 4331,
"upload_time": "2024-05-03T06:10:20",
"upload_time_iso_8601": "2024-05-03T06:10:20.138173Z",
"url": "https://files.pythonhosted.org/packages/f7/8b/84509cd3f75552e66fd94b5fb9964ef03d14bb3ae829ae7d13fc078d1595/difai-0.9.64-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c310c6bb696b3b738c0e3e5dd6df840d31784e419f78182d683f9f77c0338994",
"md5": "5696c90c714370da3571f9180d9c47e1",
"sha256": "09d845cd123f5cdeb8767e0fbc1b012553c20dea35c021cda396384ece5cada8"
},
"downloads": -1,
"filename": "difai-0.9.64.tar.gz",
"has_sig": false,
"md5_digest": "5696c90c714370da3571f9180d9c47e1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 4260,
"upload_time": "2024-05-03T06:10:22",
"upload_time_iso_8601": "2024-05-03T06:10:22.176703Z",
"url": "https://files.pythonhosted.org/packages/c3/10/c6bb696b3b738c0e3e5dd6df840d31784e419f78182d683f9f77c0338994/difai-0.9.64.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-03 06:10:22",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "marvin.vanaalst",
"gitlab_project": "difai",
"lcname": "difai"
}