-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
134 lines (124 loc) · 4.08 KB
/
Copy pathpyproject.toml
File metadata and controls
134 lines (124 loc) · 4.08 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
126
127
128
129
130
131
132
133
134
[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'",
"pyobjc-framework-Vision>=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",
"google-api-python-client>=2.198.0",
"google-auth-oauthlib>=1.4.0",
"fastapi>=0.115.0",
"uvicorn[standard]>=0.34.0",
"fpdf2>=2.8.7",
]
[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/",
"ww/gen_video/youtube_upload.py",
"ww/gen_video/youtube_set_privacy.py",
"ww/gen_video/server.py",
]
[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
]