diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..0586ecb --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,37 @@ +[build-system] +requires = ["setuptools>=60.5", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "colint" +version = "0.1" +description = "" +authors = [ + { name = "Davide Colì", email = "davide.coli@secomind.com" }, +] +readme = "README.md" +requires-python = ">=3.10" +dependencies = [ + "black>=25.1.0", + "exceptiongroup>=1.2.2", + "flake8-docstrings>=1.7.0", + "GitPython>=3.1.43", + "ipykernel>=6.29.5", + "isort>=6.0.1", + "tokenize-rt>=6.0.0", + "toml>=0.10.2", + "tomli>=2.0.1", + "typing-extensions>=4.12.2", +] + +[project.scripts] +colint = "colint.colinter:main" + +[tool.setuptools] +package-dir = {"" = "src"} + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.setuptools.package-data] +"colint" = ["*.toml"] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index e211846..0000000 --- a/requirements.txt +++ /dev/null @@ -1,48 +0,0 @@ -asttokens==2.4.1 -black==24.8.0 -click==8.1.7 -comm==0.2.2 -debugpy==1.8.5 -decorator==5.1.1 -exceptiongroup==1.2.2 -executing==2.1.0 -flake8==7.1.1 -flake8-docstrings==1.7.0 -gitdb==4.0.11 -GitPython==3.1.43 -ipykernel==6.29.5 -ipython==8.27.0 -isort==5.13.2 -jedi==0.19.1 -jupyter_client==8.6.3 -jupyter_core==5.7.2 -matplotlib-inline==0.1.7 -mccabe==0.7.0 -mypy-extensions==1.0.0 -nest-asyncio==1.6.0 -packaging==24.1 -parso==0.8.4 -pathspec==0.12.1 -pexpect==4.9.0 -platformdirs==4.3.2 -prompt_toolkit==3.0.47 -psutil==6.0.0 -ptyprocess==0.7.0 -pure_eval==0.2.3 -pycodestyle==2.12.1 -pydocstyle==6.3.0 -pyflakes==3.2.0 -Pygments==2.18.0 -python-dateutil==2.9.0.post0 -pyzmq==26.2.0 -six==1.16.0 -smmap==5.0.1 -snowballstemmer==2.2.0 -stack-data==0.6.3 -tokenize-rt==6.0.0 -toml==0.10.2 -tomli==2.0.1 -tornado==6.4.1 -traitlets==5.14.3 -typing_extensions==4.12.2 -wcwidth==0.2.13 diff --git a/setup.py b/setup.py deleted file mode 100644 index b93101f..0000000 --- a/setup.py +++ /dev/null @@ -1,18 +0,0 @@ -from setuptools import find_packages, setup - -with open("requirements.txt") as f: - requirements = f.read().splitlines() -setup( - name="colint", - version="0.1", - packages=find_packages(), - package_data={ - "colint": ["pyproject.toml"], - }, - install_requires=requirements, - entry_points={ - "console_scripts": [ - "colint=colint.colinter:main", - ], - }, -) diff --git a/colint/__init__.py b/src/colint/__init__.py similarity index 100% rename from colint/__init__.py rename to src/colint/__init__.py diff --git a/colint/clean_jupyter/__init__.py b/src/colint/clean_jupyter/__init__.py similarity index 100% rename from colint/clean_jupyter/__init__.py rename to src/colint/clean_jupyter/__init__.py diff --git a/colint/clean_jupyter/clean_jupyter.py b/src/colint/clean_jupyter/clean_jupyter.py similarity index 100% rename from colint/clean_jupyter/clean_jupyter.py rename to src/colint/clean_jupyter/clean_jupyter.py diff --git a/colint/code_format/__init__.py b/src/colint/code_format/__init__.py similarity index 100% rename from colint/code_format/__init__.py rename to src/colint/code_format/__init__.py diff --git a/colint/code_format/code_format.py b/src/colint/code_format/code_format.py similarity index 100% rename from colint/code_format/code_format.py rename to src/colint/code_format/code_format.py diff --git a/colint/colinter.py b/src/colint/colinter.py similarity index 98% rename from colint/colinter.py rename to src/colint/colinter.py index d07d7e3..d525c13 100644 --- a/colint/colinter.py +++ b/src/colint/colinter.py @@ -10,7 +10,7 @@ from .params.params import Params from .sort_libraries.sorter import sort_imports -config_file = Path(__file__).parent / "pyproject.toml" +config_file = Path(__file__).parent / "config.toml" params = Params.from_toml(config_file) COMMANDS = { diff --git a/colint/pyproject.toml b/src/colint/config.toml similarity index 100% rename from colint/pyproject.toml rename to src/colint/config.toml diff --git a/colint/docformat/__init__.py b/src/colint/docformat/__init__.py similarity index 100% rename from colint/docformat/__init__.py rename to src/colint/docformat/__init__.py diff --git a/colint/docformat/apply_google_style.py b/src/colint/docformat/apply_google_style.py similarity index 100% rename from colint/docformat/apply_google_style.py rename to src/colint/docformat/apply_google_style.py diff --git a/colint/docformat/docformat.py b/src/colint/docformat/docformat.py similarity index 100% rename from colint/docformat/docformat.py rename to src/colint/docformat/docformat.py diff --git a/colint/docformat/format_commented_lines.py b/src/colint/docformat/format_commented_lines.py similarity index 100% rename from colint/docformat/format_commented_lines.py rename to src/colint/docformat/format_commented_lines.py diff --git a/colint/docformat/format_docstring.py b/src/colint/docformat/format_docstring.py similarity index 100% rename from colint/docformat/format_docstring.py rename to src/colint/docformat/format_docstring.py diff --git a/colint/docformat/format_text.py b/src/colint/docformat/format_text.py similarity index 100% rename from colint/docformat/format_text.py rename to src/colint/docformat/format_text.py diff --git a/colint/grammar_libraries/__init__.py b/src/colint/grammar_libraries/__init__.py similarity index 100% rename from colint/grammar_libraries/__init__.py rename to src/colint/grammar_libraries/__init__.py diff --git a/colint/grammar_libraries/flake8error.py b/src/colint/grammar_libraries/flake8error.py similarity index 100% rename from colint/grammar_libraries/flake8error.py rename to src/colint/grammar_libraries/flake8error.py diff --git a/colint/grammar_libraries/get_custom_style_guide.py b/src/colint/grammar_libraries/get_custom_style_guide.py similarity index 100% rename from colint/grammar_libraries/get_custom_style_guide.py rename to src/colint/grammar_libraries/get_custom_style_guide.py diff --git a/colint/grammar_libraries/grammar_check.py b/src/colint/grammar_libraries/grammar_check.py similarity index 100% rename from colint/grammar_libraries/grammar_check.py rename to src/colint/grammar_libraries/grammar_check.py diff --git a/colint/newline_fix/__init__.py b/src/colint/newline_fix/__init__.py similarity index 100% rename from colint/newline_fix/__init__.py rename to src/colint/newline_fix/__init__.py diff --git a/colint/newline_fix/newline_fix.py b/src/colint/newline_fix/newline_fix.py similarity index 100% rename from colint/newline_fix/newline_fix.py rename to src/colint/newline_fix/newline_fix.py diff --git a/colint/params/__init__.py b/src/colint/params/__init__.py similarity index 100% rename from colint/params/__init__.py rename to src/colint/params/__init__.py diff --git a/colint/params/black_params.py b/src/colint/params/black_params.py similarity index 100% rename from colint/params/black_params.py rename to src/colint/params/black_params.py diff --git a/colint/params/exceptions.py b/src/colint/params/exceptions.py similarity index 100% rename from colint/params/exceptions.py rename to src/colint/params/exceptions.py diff --git a/colint/params/flake8_params.py b/src/colint/params/flake8_params.py similarity index 100% rename from colint/params/flake8_params.py rename to src/colint/params/flake8_params.py diff --git a/colint/params/isort_params.py b/src/colint/params/isort_params.py similarity index 100% rename from colint/params/isort_params.py rename to src/colint/params/isort_params.py diff --git a/colint/params/params.py b/src/colint/params/params.py similarity index 100% rename from colint/params/params.py rename to src/colint/params/params.py diff --git a/colint/sort_libraries/__init__.py b/src/colint/sort_libraries/__init__.py similarity index 100% rename from colint/sort_libraries/__init__.py rename to src/colint/sort_libraries/__init__.py diff --git a/colint/sort_libraries/sorter.py b/src/colint/sort_libraries/sorter.py similarity index 92% rename from colint/sort_libraries/sorter.py rename to src/colint/sort_libraries/sorter.py index a312161..92db1c2 100644 --- a/colint/sort_libraries/sorter.py +++ b/src/colint/sort_libraries/sorter.py @@ -1,11 +1,12 @@ import io +import os from pathlib import Path import isort from ..params.isort_params import IsortParams from ..utils.jupyter_utils import JupyterNotebokParser -from ..utils.os_utils import get_valid_files +from ..utils.os_utils import get_git_repo, get_valid_files from ..utils.text_styling_utils import TextModifiers, style_text FILE_SORTED_MESSAGE = "! File has been sorted: " @@ -89,6 +90,12 @@ def sort_imports(path: str, only_check: bool, params: IsortParams) -> bool: bool: Boolean indicating if any imports have been sorted in any file. """ files = get_valid_files(path) + git_repo = get_git_repo(path) + current_directory = os.getcwd() + + if git_repo is not None: + new_dir = Path(git_repo.git_dir).parent.absolute() + os.chdir(str(new_dir)) some_file_has_been_sorted = False @@ -125,4 +132,7 @@ def sort_imports(path: str, only_check: bool, params: IsortParams) -> bool: if file_not_linted: print(__style_message(f, only_check)) + if os.getcwd() != current_directory: + os.chdir(current_directory) + return some_file_has_been_sorted diff --git a/colint/utils/__init__.py b/src/colint/utils/__init__.py similarity index 100% rename from colint/utils/__init__.py rename to src/colint/utils/__init__.py diff --git a/colint/utils/exceptions.py b/src/colint/utils/exceptions.py similarity index 100% rename from colint/utils/exceptions.py rename to src/colint/utils/exceptions.py diff --git a/colint/utils/jupyter_utils.py b/src/colint/utils/jupyter_utils.py similarity index 100% rename from colint/utils/jupyter_utils.py rename to src/colint/utils/jupyter_utils.py diff --git a/colint/utils/os_utils.py b/src/colint/utils/os_utils.py similarity index 85% rename from colint/utils/os_utils.py rename to src/colint/utils/os_utils.py index 3dbdd3c..0262762 100644 --- a/colint/utils/os_utils.py +++ b/src/colint/utils/os_utils.py @@ -52,8 +52,12 @@ def get_valid_files(path: str | Path) -> list[str]: str(f) for f in Path(path).rglob("*") if f.is_file() and ".git" not in f.parts ] + valid_files = set(files) + if repo: # If a git repository exists, remove files in gitignore - repo_ignore = set(repo.ignored(files)) - files = list(set(files).difference(repo_ignore)) + batch_size = 100 + for k in range(0, len(files), batch_size): + repo_ignore = set(repo.ignored(files[k : k + batch_size])) + valid_files.difference_update(repo_ignore) - return sorted(files) + return sorted(list(valid_files)) diff --git a/colint/utils/text_styling_utils.py b/src/colint/utils/text_styling_utils.py similarity index 100% rename from colint/utils/text_styling_utils.py rename to src/colint/utils/text_styling_utils.py