Files
GoogleDriveManagement/pyproject.toml
2026-07-04 16:42:58 -04:00

113 lines
3.5 KiB
TOML

[project]
name = "gam7"
dynamic = [
"version",
]
authors = [
{ name = "Jay Lee", email = "jay0lee@gmail.com" },
{ name = "Ross Scroggs", email = "Ross.Scroggs@gmail.com" },
]
dependencies = [
"arrow==1.4.0",
"chardet==7.4.3",
"cryptography==48.0.1",
"distro==1.9.0 ; sys_platform=='linux'",
"filelock==3.29.4",
"google-api-python-client==2.197.0",
"google-auth-httplib2==0.4.0",
"google-auth-oauthlib==1.4.0",
"google-auth==2.55.1",
"httplib2==0.31.2",
"lxml==6.1.1",
"passlib==1.7.4",
"pathvalidate==3.3.1",
"pysocks==1.7.1",
]
description = "CLI tool to manage Google Workspace"
readme = "README.md"
requires-python = ">=3.11"
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Operating System :: OS Independent",
]
license-files = [
"LICEN[CS]E*",
]
[project.license]
text = "Apache License (2.0)"
[project.optional-dependencies]
yubikey = [
"yubikey-manager==5.9.1",
]
[project.scripts]
gam = "gam.__main__:main"
[project.urls]
Homepage = "https://github.com/GAM-team/GAM"
Issues = "https://github.com/GAM-team/GAM/issues"
Discussion = "https://groups.google.com/group/google-apps-manager"
Chat = "https://git.io/gam-chat"
[tool.hatch.version]
path = "src/gam/__init__.py"
[tool.hatch.build.targets.wheel]
packages = [
"src/gam",
]
[build-system]
requires = [
"hatchling",
]
build-backend = "hatchling.build"
# Ruff linter configuration — https://docs.astral.sh/ruff/
[tool.ruff]
target-version = "py311"
src = ["src", "tests"]
[tool.ruff.lint]
# Focused rules that catch real bugs without overwhelming noise.
select = [
"F", # Pyflakes — unused imports, undefined names, etc.
"E711", # Comparison to None (use `is` / `is not`)
"E713", # Not-in test (use `not in` operator)
"UP", # pyupgrade — modernize syntax for Python 3.11+
]
ignore = [
# Pyflakes rules suppressed for GAM's architecture
"F402", # Import shadowed by loop variable — GAM reuses `entity` in loops
"F403", # Star import — GAM uses `from gam.constants import *`
"F405", # Undefined from star import — GAM uses `from gam.constants import *`
"F811", # Redefined while unused — GAM reassigns variables in arg-parsing loops
"F841", # Local variable assigned but never used — some GAM patterns use this intentionally
# pyupgrade rules that would be too noisy right now
"UP009", # UTF-8 encoding declaration — harmless, not worth a 17-file churn
"UP024", # os.error alias — 37 occurrences, low priority
"UP030", # Format literals — would change string formatting style
"UP031", # printf-string-formatting — 200+ occurrences, too noisy right now
"UP032", # f-string — auto-conversion can break complex expressions
]
fixable = [] # Don't auto-fix — we want to review changes manually
[tool.ruff.lint.per-file-ignores]
# __init__.py re-exports cmd/ functions for dispatch tables
"src/gam/__init__.py" = ["F401", "E402", "F821"]
# cmd/ files use `from gam.constants import *`
"src/gam/cmd/**" = ["F821"]
# util/ modules have ordered imports and re-exports
"src/gam/util/**" = ["E402", "F821"]
# gamlib modules
"src/gam/gamlib/**" = ["F821"]
# Test files can be more relaxed
"tests/**" = ["F401", "F811"]