1+ # =============================================================================
2+ # Project Configuration
3+ # =============================================================================
4+
15[build-system ]
26requires = [" setuptools" , " wheel" ]
37build-backend = " setuptools.build_meta"
@@ -17,7 +21,6 @@ dependencies = [
1721 " tqdm" ,
1822 " cvxpy" ,
1923 " scikit-learn==1.5.1" ,
20- " geoopt" ,
2124 " datasets"
2225]
2326
@@ -48,7 +51,22 @@ packages = ["manify"]
4851[tool .setuptools .package-data ]
4952"manify" = [" ../data/**/*" ]
5053
51- # Pylint configuration
54+ # =============================================================================
55+ # CI/CD Tool Configuration
56+ # =============================================================================
57+
58+ # Code formatting with Black
59+ [tool .black ]
60+ line-length = 120
61+ target-version = [" py310" ]
62+
63+ # Import sorting with isort
64+ [tool .isort ]
65+ profile = " black"
66+ line_length = 120
67+ skip = [" manify/optimizers/_adan.py" ] # Use unmodified adan.py code from original repo
68+
69+ # Static analysis with Pylint
5270[tool .pylint .master ]
5371init-hook = " import sys; sys.path.append('.')"
5472fail-under = 8.0
@@ -74,18 +92,10 @@ module-rgx = "([a-z_][a-z0-9_]*)"
7492[tool .pylint .typecheck ]
7593generated-members = " torch.*,nn.*"
7694
77- [tool .pytest .ini_options ]
78- testpaths = [" tests" ]
79- addopts = " --jaxtyping-packages=beartype.beartype"
80- python_files = " test_*.py"
81-
95+ # Type checking with MyPy
8296[tool .mypy ]
83- # Specify the packages to check
8497packages = [" manify" ]
85- disable_error_code = [" name-defined" ] # Needed for jaxtyping compatibility - else vector annotations fail
86- exclude = [" manify/optimizers/_adan.py" ] # Use unmodified adan.py code from original repo
87-
88- # Ignore missing imports for external libraries
98+ exclude = [" manify/optimizers/_adan.py" ] # Use unmodified adan.py code from original repo
8999python_version = " 3.10"
90100disallow_untyped_defs = true
91101disallow_incomplete_defs = true
@@ -97,8 +107,28 @@ warn_return_any = true
97107warn_unused_ignores = false
98108follow_imports = " skip"
99109ignore_missing_imports = true
110+ disable_error_code = [" name-defined" ] # Needed for jaxtyping compatibility - else vector annotations fail
100111
101- [tool .isort ]
102- profile = " black"
103- line_length = 120
104- skip = [" manify/optimizers/_adan.py" ] # Use unmodified adan.py code from original repo
112+ # Unit testing with pytest
113+ [tool .pytest .ini_options ]
114+ testpaths = [" tests" ]
115+ addopts = " --jaxtyping-packages=beartype.beartype"
116+ python_files = " test_*.py"
117+
118+ # Code coverage
119+ [tool .coverage .run ]
120+ source = [" manify" ]
121+ branch = true
122+ omit = [" manify/optimizers/_adan.py" ] # Exclude from coverage reporting
123+
124+ [tool .coverage .report ]
125+ fail_under = 80
126+
127+ [tool .coverage .xml ]
128+ output = " coverage.xml"
129+
130+ # Docstring style checking with pydocstyle
131+ [tool .pydocstyle ]
132+ convention = " google"
133+ add_ignore = [" D107" ]
134+ match = " (?!_adan).*\\ .py$" # Exclude _adan.py from docstring checks
0 commit comments