WIP Python library which fixes missing imports, It automatically fixes missing imports by importing them I mostly wrote this to learn more about python, and wanted to make something with.
recording_2024-06-25-175756.mp4
Just run pip install pyfix-imports
pyfix-imports <FILEPATH> # returns the fixed code to the stdout
pyfix-imports -f <FILEPATH> # Writes the fixed code to the file
pyfix-imports -c <CONFIGPATH> <FILEPATH> # uses the config file
I recommend after running the program use isort or ruff to sort the imports.
The default configuration file should be placed in $XDG_CONFIG_HOME/pyfix-imports/config.toml
or you can place your config file anywhere and just provide the path to the command fix-imports -c <Path>
the structure should be like this, don't forget to include [config] on the top
[config]
"tf" = "import tensorflow as tf"
"plt" = "import matplotlib.pyplot as plt"
"isprime" = "from sympy import isprime"
As they say necessity is the mother of invention, also python language server like, pyright and pylsp don't do that good of a job, that gave me the motivation to made this. I use this with the conjunction of black and isort within my neovim with conform.nvim you can also use it just put this in your conform setup
require("conform").setup({
formatters_by_ft = {
python = { "pyfix_imports", "ruff_fix", "ruff_organize_imports", "ruff_format", },
formatters = {
pyfix_imports = {
command = "pyfix-imports",
args = { "$FILENAME" },
cwd = require("conform.util").root_file({ "requirements.txt", "pyproject.toml" }),
},
}
})
I took many projects for reference/code
- autoimport I could have just used this, but I wanted to make something so took it as a reference and made this. I didn't took that much code from it, but yes as someone who has never made a decent size python project it was really helpful
- autoflake I wanted to use pyflakes to get the errors in code, and this one had great implementation of pyflake api.
- pyflakes Used this to get all the errors for undefined names.
- click Used this to make the command-line interface
- pdm Used this to structure and manage dependency for the project
- xdg-base-dirs Used this to get the config file