-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
125 lines (115 loc) · 3.77 KB
/
Copy pathpyproject.toml
File metadata and controls
125 lines (115 loc) · 3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["ww"]
exclude = ["ww/ml/"]
[tool.hatch.build.targets.sdist]
exclude = ["ww/ml/"]
[project]
name = "ww"
version = "0.1.0"
description = "A cross-platform CLI toolkit for personal and enterprise automation, with LLM integration."
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"requests>=2.32.0",
"pyperclip>=1.8.0",
"markdown>=3.5.0",
"beautifulsoup4>=4.12.0",
"readability-lxml>=0.8.1",
"lxml>=5.0.0",
"Pillow>=10.0.0",
"pyobjc-framework-Quartz>=9.0; sys_platform == 'darwin'",
"pyobjc-framework-CoreWLAN>=9.0; sys_platform == 'darwin'",
"pyobjc-framework-CoreText>=9.0; sys_platform == 'darwin'",
"pyobjc-framework-UserNotifications>=9.0; sys_platform == 'darwin'",
"pypdf>=4.0.0",
"pdf2image>=1.16.0",
"numpy>=1.24.0",
"python-dotenv>=1.0.0",
"google-genai>=1.0.0",
"chardet>=5.0.0",
"tavily-python>=0.5.0",
"piexif>=1.1.0",
"playwright>=1.40.0",
"PyJWT>=2.0.0",
"dnspython>=2.4.0",
"speedtest-cli>=2.1.3",
"pydub>=0.25.1",
"matplotlib>=3.7.0",
"pandas>=2.0.0",
"selenium>=4.15.0",
"huggingface_hub>=0.20.0",
"langgraph>=1.2.6",
"langchain-openai>=1.3.3",
"whisperx>=3.8.6",
]
[project.scripts]
ww = "ww.main:main"
[dependency-groups]
dev = [
"pytest>=9.0",
"pytest-xdist>=3.8",
"coverage>=7.0",
]
[tool.pyright]
pythonVersion = "3.11"
typeCheckingMode = "basic"
reportMissingImports = true
reportMissingModuleSource = false
reportAttributeAccessIssue = false
exclude = [
".venv/",
"ww/ml/",
"tests/",
"ww/macos/",
"ww/trading/",
"ww/wandbrun/",
"ww/agent/speech_to_text_agent.py",
"ww/audio/speech_to_text.py",
"ww/java/java_agent.py",
"ww/arduino/",
"ww/ansible/",
"ww/pico/",
]
[tool.ruff]
extend-exclude = ["ww/ml"]
[tool.ruff.lint]
ignore = [
"E731", # lambda assignments — used intentionally as prompt builders
"E722", # bare except — intentional in network/system code
"F841", # unused local variable
]
[tool.ruff.lint.per-file-ignores]
"ww/search/*.py" = ["E402"] # warnings.filterwarnings must precede imports
"ww/mmlu/*.py" = ["E402"]
"ww/networkx/*.py" = ["E402"]
"ww/social/*.py" = ["E402"]
"tests/*.py" = ["E402"]
[tool.bandit]
exclude_dirs = ["ww/ml", "tests"]
skips = [
"B101", # assert_used — intentional in tests and validation
"B104", # hardcoded_bind_all_interfaces — network tools need 0.0.0.0
"B105", # hardcoded_password_string — config defaults, not real secrets
"B106", # hardcoded_password_funcarg — config defaults
"B107", # hardcoded_password_default — config defaults
"B108", # hardcoded_tmp_directory — CLI temp file patterns
"B110", # try_except_pass — intentional silent error handling
"B112", # try_except_continue — intentional in loops
"B113", # request_without_timeout — some calls don't need timeout
"B301", # pickle — used for ML model serialization
"B307", # eval — used for dynamic expression evaluation
"B310", # urllib_urlopen — used for URL validation
"B311", # random — used for generating names, not security
"B314", # xml — used for parsing config files
"B404", # import_subprocess — CLI tool needs subprocess
"B405", # import_xml_etree — used for parsing
"B602", # subprocess_popen_with_shell_equals_true — intentional
"B603", # subprocess_without_shell_equals_true — intentional
"B605", # start_process_with_shell — intentional in CLI
"B607", # start_process_with_partial_path — intentional
"B608", # hardcoded_sql_expressions — false positives
"B615", # huggingface_unsafe_download — model downloads
]