Mirror of https://github.com/roostorg/osprey github.com/roostorg/osprey
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at de6347c31c28038597016d3db545507f4e9b2cc7 332 lines 8.9 kB view raw
1[build-system] 2requires = ["uv_build>=0.8.12,<0.9.0"] 3build-backend = "uv_build" 4 5[dependency-groups] 6common = [ 7 "absl-py==2.3.1", 8 "asttokens==3.0.0", 9 "blinker==1.9.0", 10 "bytecode==0.16.2", 11 "cachetools==5.5.2", 12 "certifi==2025.8.3", 13 "charset-normalizer==3.4.2", 14 "click==7.1.2", 15 "datadog==0.51.0", 16 "ddtrace==2.21.11", 17 "decorator==5.2.1", 18 "deepmerge==0.3.0", 19 "dnspython==2.0.0", 20 "ecdsa==0.19.1", 21 "envier==0.5.2", 22 "erlpack", 23 "executing==2.2.0", 24 "faker==4.18.0", 25 "flask==1.1.4", 26 "gevent==24.2.1", 27 "google-api-core==2.19.2", 28 "google-api-python-client==2.105.0", 29 "google-auth==2.40.3", 30 "google-auth-httplib2==0.2.0", 31 "google-cloud-appengine-logging==1.6.2", 32 "google-cloud-audit-log==0.3.2", 33 "google-cloud-bigquery==3.27.0", 34 "google-cloud-bigtable==2.10.0", 35 "google-cloud-core==2.4.3", 36 "google-cloud-kms==3.5.1", 37 "google-cloud-logging==3.4.0", 38 "google-cloud-pubsub==2.15.2", 39 "google-cloud-secret-manager==2.24.0", 40 "google-cloud-storage==2.10.0", 41 "google-crc32c==1.7.1", 42 "google-resumable-media==2.7.2", 43 "googleapis-common-protos==1.70.0", 44 "graphviz==0.20", 45 "greenlet", 46 "grpc-google-iam-v1==0.14.2", 47 "grpcio==1.49.1; platform_machine == 'x86_64'", # Normal dependency for production 48 "grpcio==1.53.*; platform_machine == 'aarch64'", # Only install on ARM64 architecture for local development on MacOS 49 "grpcio-health-checking==1.44.0", 50 "grpcio-reflection==1.44.0", 51 "grpcio-status==1.49.1", 52 "grpcio-tools==1.49.1", 53 "gunicorn", 54 "hash-ring", 55 "httplib2==0.22.0", 56 "humanize==4.12.3", 57 "idna==3.10", 58 "imagehash==4.3.2", 59 "importlib-metadata==8.7.0", 60 "infinity==1.5", 61 "iniconfig==2.1.0", 62 "intervals==0.9.2", 63 "ipdb==0.13.13", 64 "ipython==9.4.0", 65 "ipython-pygments-lexers==1.1.1", 66 "iso8601==2.1.0", 67 "itsdangerous==1.1.0", 68 "jedi==0.19.2", 69 "jinja2==2.11.3", 70 "jslog4kube==1.0.6", 71 "jsonpath-rw", 72 "kafka-python==1.4.7", 73 "linkify-it-py==2.0.3", 74 "markdown-it-py==3.0.0", 75 "markupsafe==2.0.1", 76 "matplotlib-inline==0.1.7", 77 "maxminddb==1.5.4", 78 "mdit-py-plugins==0.4.2", 79 "mdurl==0.1.2", 80 "memray==1.17.2", 81 "minio>=7.2.16", 82 "mmh3==3.0.0", 83 "msgpack==1.0.8", 84 "mypy==1.13.0", 85 "mypy-extensions==1.0.0", 86 "mypy-protobuf==3.6.0", 87 "nostril", 88 "numpy==1.24.4", 89 "opentelemetry-api==1.36.0", 90 "packaging==25.0", 91 "parso==0.8.4", 92 "pdqhash==0.2.5", 93 "pexpect==4.9.0", 94 "phone-iso3166==0.3.8", 95 "pillow==9.5.0", 96 "plac==1.4.5", 97 "platformdirs==4.3.8", 98 "pluggy==1.5.0", 99 "ply==3.11", 100 "prompt-toolkit==3.0.51", 101 "proto-plus==1.26.1", 102 "protobuf==4.25.8", 103 "psycogreen==1.0.2", 104 "psycopg2-binary==2.9.10", 105 "ptyprocess==0.7.0", 106 "pure-eval==0.2.3", 107 "py==1.11.0", 108 "pyasn1==0.6.1", 109 "pyasn1-modules==0.4.2", 110 "pycryptodome==3.21.0", 111 "pydantic==1.10.19", 112 "pydruid==0.6.9", 113 "pygments==2.19.2", 114 "pyparsing==3.2.3", 115 "pytest==8.3.5", 116 "pytest-flask==1.3.0", 117 "pytest-mock==3.14.1", 118 "pytest-order==1.3.0", 119 "python-dateutil==2.8.0", 120 "python-jose==3.5.0", 121 "python-json-logger==0.1.10", 122 "python-levenshtein==0.12.2", 123 "pytz==2022.1", 124 "pywavelets==1.8.0", 125 "pyyaml==6.0.1", 126 "requests==2.32.4", 127 "requests-mock==1.9.3", 128 "result==0.5.0", 129 "retry==0.9.2", 130 "rich==14.1.0", 131 "rsa==4.9.1", 132 "scipy==1.15.3", 133 "sentry-sdk==1.5.12", 134 "setuptools==80.9.0", 135 "simplejson==3.19.3", 136 "six==1.16.0", 137 "sqlalchemy==1.4.31", 138 "sqlalchemy-utils==0.41.1", 139 "sqlalchemy2-stubs==0.0.2a38", 140 "stack-data==0.6.3", 141 "tabulate==0.9.0", 142 "tenacity==8.1.0", 143 "text-unidecode==1.3", 144 "textual==5.2.0", 145 "tink==1.9.0", 146 "tld==0.12.7", 147 "traitlets==5.14.3", 148 "types-cachetools==6.1.0.20250717", 149 "types-click==7.1.8", 150 "types-flask==1.1.6", 151 "types-ipaddress==1.0.8", 152 "types-jinja2==2.11.9", 153 "types-markupsafe==1.1.10", 154 "types-maxminddb==1.5.0", 155 "types-protobuf==4.24.0.1", 156 "types-psycopg2>=2.9.21.20250809", 157 "types-python-dateutil==2.9.0.20250708", 158 "types-pytz==2025.2.0.20250516", 159 "types-pyyaml==6.0.12.20250516", 160 "types-requests==2.27.7", 161 "types-simplejson==3.20.0.20250326", 162 "types-six==1.17.0.20250515", 163 "types-urllib3==1.26.25.14", 164 "types-werkzeug==1.0.9", 165 "typing-extensions==4.6.3", 166 "typing-inspect==0.9.0", 167 "uc-micro-py==1.0.3", 168 "unidecode==1.3.8", 169 "uritemplate==4.2.0", 170 "urllib3==2.5.0", 171 "wcwidth==0.2.13", 172 "werkzeug==1.0.1", 173 "wrapt==1.17.2", 174 "xmltodict==0.14.2", 175 "zipp==3.23.0", 176 "zope-event==5.1.1", 177 "zope-interface==7.2", 178] 179dev = [ 180 "mypy>=1.13.0", 181 "pre-commit>=4.3.0", 182 "ruff>=0.12.9", 183 "sqlalchemy[mypy]>=1.4.31", 184 "types-flask-cors>=3.0.10", 185] 186 187 188[tool.uv] 189override-dependencies = ["ddtrace>=2.17.2,<3.0.0"] 190default-groups = ["common", "dev"] 191 192[tool.uv.sources] 193erlpack = { git = "https://github.com/discord/erlpack.git", rev = "b25ebd51ae4c097bd7f756fd4e1c841b61bfe50b" } 194greenlet = { git = "https://github.com/discord/greenlet.git", rev = "a75d78f1547c74a81134644a179467525a255466" } 195gunicorn = { git = "https://github.com/discord/gunicorn.git", rev = "979efdcb918daa536d8923668241c6e6bf1edb58" } 196hash-ring = { url = "https://storage.googleapis.com/discord-devops/hash_ring-src-b4b56bc93053881b68b829ee9d1a4871b4aee592.zip" } 197jsonpath-rw = { url = "https://github.com/kennknowles/python-jsonpath-rw/archive/6f5647bb3ad2395c20f0191fef07a1df51c9fed8.tar.gz" } 198nostril = { url = "https://github.com/casics/nostril/archive/v1.2.0.tar.gz" } 199osprey_rpc = { workspace = true } 200osprey_worker = { workspace = true } 201example_plugins = { workspace = true } 202 203[tool.uv.workspace] 204members = [ 205 "osprey_rpc", 206 "osprey_worker", 207 "example_plugins", 208] 209 210 211[tool.ruff] 212target-version = "py311" 213line-length = 120 214fix = true 215force-exclude = true # Needed for pre-commit to work on staged files 216extend-exclude = [ 217 # Exclude protobuf generated files 218 "**/*_pb2*.py", 219 "**/*_pb2*.pyi", 220] 221 222[tool.ruff.format] 223quote-style = "single" 224indent-style = "space" 225skip-magic-trailing-comma = false 226line-ending = "auto" 227 228[tool.ruff.lint] 229select = [ 230 "E", # pycodestyle errors 231 "F", # pyflakes 232 "I", # isort 233 "B006", # flake8-bugbear, B006 catches mutable defaults 234] 235ignore = [ 236 "E501", # Formatter already does a best effort of handling line-length, but some lines just can't be shortened anymore 237] 238 239[tool.ruff.lint.isort] 240known-first-party = ["osprey_worker", "osprey_rpc", "example_plugins"] 241 242[tool.mypy] 243plugins = ["pydantic.mypy", "sqlalchemy.ext.mypy.plugin"] 244python_version = "3.11" 245namespace_packages = true 246explicit_package_bases = true 247disable_error_code = ["annotation-unchecked"] 248 249mypy_path = [ 250 "osprey_rpc/src", 251 "osprey_worker/src", 252 "example_plugins/src", 253] 254 255# Strict mode includes the following flags. When these are all True, they can be replaced with strict mode. 256# Mostly disabled to match old config 257warn_unused_configs = true 258disallow_any_generics = true 259disallow_subclassing_any = true 260disallow_untyped_calls = false 261disallow_untyped_defs = false 262disallow_incomplete_defs = false 263check_untyped_defs = false 264disallow_untyped_decorators = false 265warn_redundant_casts = true 266warn_return_any = false 267no_implicit_reexport = false 268strict_equality = false 269 270# Additional checks we want to turn on eventually (disabled for now) 271disallow_any_unimported = false 272disallow_any_expr = false 273disallow_any_decorated = false 274disallow_any_explicit = false 275warn_unreachable = false 276 277exclude = [ 278 "^.*/venv/.*$", 279 ".*/setup\\.py$", 280 ".*_pb2\\.py$", 281 ".*_pb2\\.pyi$", 282 ".*_pb2_grpc\\.py$", 283 ".*/tests/.*", 284 ".*/test_.*\\.py$", 285] 286 287# required until pydantic explicitly exports Extra 288[[tool.mypy.overrides]] 289module = "pydantic.main" 290implicit_reexport = true 291 292[[tool.mypy.overrides]] 293module = ["jsonpath_rw", "minio.*"] 294ignore_missing_imports = true 295 296# third party packages we don't care about 297[[tool.mypy.overrides]] 298module = [ 299 "stubs.*", 300 "pigeon.*", 301 "google.*", 302 "perf_tools.*", 303 "gevent.*", 304 "grpc.*", 305 "pydruid.*", 306 "phone_iso3166.*", 307 "typing_inspect.*", 308 "tink.*", 309 "sqlalchemy_utils.*", 310 "graphviz.*", 311 "psycogreen.*", 312 "hash_ring.*", 313 "deepmerge.*", 314 "greenlet.*", 315 "Levenshtein.*", 316 "kafka.*", 317 "pythonjsonlogger.*", 318 "msgpack.*", 319 "jose.*", 320] 321ignore_errors = true 322disable_error_code = ["annotation-unchecked", "import-untyped"] 323ignore_missing_imports = true 324# At least for now, ignore tests. 325# TODO: Remove these exclusions once they're fixed 326[[tool.mypy.overrides]] 327module = "osprey.worker.*.tests.*" 328ignore_errors = true 329 330[[tool.mypy.overrides]] 331module = ["osprey.rpc.*"] 332ignore_errors = true