Skip to content

Commit 2973412

Browse files
Merge pull request #14 from ahmed-n-abdeltwab/feature/make-modular
chore(release): prepare version 1.2.1 release
2 parents 26b1df3 + e44c63d commit 2973412

File tree

1 file changed

+127
-0
lines changed

1 file changed

+127
-0
lines changed

pyproject.toml

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
[build-system]
2+
requires = ["setuptools>=65.0", "wheel"]
3+
build-backend = "setuptools.build_meta"
4+
5+
[project]
6+
name = "spyware-detector-training"
7+
version = "0.1.0"
8+
description = "Production-ready ML pipeline for spyware detection with Docker support"
9+
readme = "README.md"
10+
authors = [
11+
{name = "Ahmed N. Abdeltwab", email = "ahmed.n.abdeltwab@gmail.com"},
12+
]
13+
maintainers = [
14+
{name = "Ahmed N. Abdeltwab", email = "ahmed.n.abdeltwab@gmail.com"},
15+
]
16+
license = {text = "MIT"}
17+
classifiers = [
18+
"Development Status :: 4 - Beta",
19+
"Intended Audience :: Cybersecurity Professionals",
20+
"Intended Audience :: Science/Research",
21+
"License :: OSI Approved :: MIT License",
22+
"Programming Language :: Python :: 3.9",
23+
"Operating System :: POSIX :: Linux",
24+
"Topic :: Security",
25+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
26+
"Typing :: Typed",
27+
]
28+
keywords = ["spyware", "malware", "mlops", "security", "docker"]
29+
requires-python = ">=3.9"
30+
dependencies = [
31+
"pandas==1.5.3",
32+
"numpy==1.23.5",
33+
"scikit-learn==1.2.2",
34+
"PyYAML==6.0",
35+
"python-dotenv>=1.0.0",
36+
"loguru>=0.7.0", # Enhanced logging
37+
]
38+
39+
[project.optional-dependencies]
40+
dev = [
41+
"pytest==7.4.0",
42+
"black==23.9.1",
43+
"flake8==6.1.0",
44+
"mypy==1.5.1",
45+
"pytest-cov==4.1.0",
46+
"types-PyYAML==6.0.12.11",
47+
"ipython==8.12.0", # For interactive debugging
48+
]
49+
deploy = [
50+
"docker>=6.1.3",
51+
"boto3>=1.28.0", # For AWS integration
52+
"google-cloud-storage>=2.0.0", # For GCP integration
53+
]
54+
docs = [
55+
"mkdocs==1.5.2",
56+
"mkdocs-material==9.2.1",
57+
"mkdocstrings[python]==0.22.0",
58+
]
59+
60+
[project.scripts]
61+
spyware-train = "src.main:main" # CLI entry point
62+
63+
[project.urls]
64+
Homepage = "https://github.com/ahmed-n-abdeltwab/spyware-detector-training"
65+
Documentation = "https://github.com/ahmed-n-abdeltwab/spyware-detector-training#readme"
66+
Issues = "https://github.com/ahmed-n-abdeltwab/spyware-detector-training/issues"
67+
Changelog = "https://github.com/ahmed-n-abdeltwab/spyware-detector-training/releases"
68+
Docker = "https://hub.docker.com/r/ahmednabdeltwab/spyware-detector"
69+
70+
[tool.setuptools]
71+
packages = ["src"]
72+
package-dir = {"" = "src"}
73+
include-package-data = true
74+
zip-safe = false # Important for Docker deployments
75+
76+
[tool.setuptools.package-data]
77+
"*" = ["*.yaml", "*.yml", "*.json", "*.pkl"]
78+
79+
[tool.black]
80+
line-length = 88
81+
target-version = ["py39"]
82+
include = '\.pyi?$'
83+
exclude = '''
84+
/(
85+
\.git
86+
| \.venv
87+
| build
88+
| dist
89+
| notebooks
90+
| data
91+
| models
92+
)/|
93+
\.ipynb$
94+
'''
95+
96+
[tool.isort]
97+
profile = "black"
98+
known_first_party = ["src"]
99+
sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
100+
line_length = 88
101+
102+
[tool.pytest.ini_options]
103+
testpaths = ["tests"]
104+
addopts = [
105+
"--cov=src",
106+
"--cov-report=term-missing:skip-covered",
107+
"--cov-report=html",
108+
"--verbose",
109+
"--durations=10",
110+
]
111+
python_files = "test_*.py"
112+
filterwarnings = [
113+
"error",
114+
"ignore::DeprecationWarning:pandas",
115+
"ignore::UserWarning:sklearn",
116+
]
117+
118+
[tool.mypy]
119+
python_version = "3.9"
120+
warn_return_any = true
121+
warn_unused_configs = true
122+
disallow_untyped_defs = true
123+
disallow_incomplete_defs = true
124+
check_untyped_defs = true
125+
no_implicit_optional = true
126+
strict_equality = true
127+
show_error_codes = true

0 commit comments

Comments
 (0)