Skip to content
This repository was archived by the owner on Sep 3, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
12a9260
chore(pydantic): upgrades to v2.0
mvilanova May 6, 2025
6783477
unpins pydantic
mvilanova May 6, 2025
bf7ab5b
requirements
mvilanova May 6, 2025
829d6c7
ErrorWrapper
mvilanova May 6, 2025
17727c0
bumps blockkit version
mvilanova May 6, 2025
6a089c3
bumps more versions
mvilanova May 6, 2025
1b8d155
main warning
mvilanova May 6, 2025
2014f24
namestr
mvilanova May 6, 2025
45a09db
validation
mvilanova May 6, 2025
1b13c97
fixes
mvilanova May 6, 2025
034262a
fixes
mvilanova May 6, 2025
3995024
Update src/dispatch/data/source/data_format/service.py
mvilanova May 6, 2025
057e559
Update src/dispatch/data/query/service.py
mvilanova May 6, 2025
68884ba
Update src/dispatch/data/alert/service.py
mvilanova May 6, 2025
a035854
tests fix
mvilanova May 6, 2025
d17a1fb
type fix
mvilanova May 6, 2025
1a4c181
removes import
mvilanova May 6, 2025
0d4a67f
as_hex fix
mvilanova May 6, 2025
e06ae6e
time fix
mvilanova May 6, 2025
4221492
fixes
mvilanova May 6, 2025
e959532
fixes
mvilanova May 6, 2025
4962c80
conflicts
mvilanova May 6, 2025
d4d9c28
test fixes
mvilanova May 6, 2025
56658cc
test fixes
mvilanova May 6, 2025
5b5577d
conflicts
mvilanova May 6, 2025
28675b8
conflicts
mvilanova May 6, 2025
9f9ff54
fixes
mvilanova May 6, 2025
f2191cf
fixes
mvilanova May 6, 2025
0ead1d0
test fixes
mvilanova May 7, 2025
0bb9cdf
Merge branch 'main' into chore/pydantic-2.0
mvilanova May 7, 2025
520ace4
ruff
mvilanova May 7, 2025
fad9ebb
Merge branch 'chore/pydantic-2.0' of https://github.com/Netflix/dispa…
mvilanova May 7, 2025
59cbdd1
fix
mvilanova May 7, 2025
5f5bc2c
snooze_extension_oncall_service
mvilanova May 7, 2025
c6e0b51
IndividualContactRead fix
mvilanova May 7, 2025
84b67f0
get or create individual
mvilanova May 7, 2025
85e9466
removes unused import
mvilanova May 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions requirements-base.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,40 @@ aiocache
aiofiles
aiohttp
alembic
atlassian-python-api==3.32.0
atlassian-python-api
attrs>=22.2.0 # Required by referencing; conflicts with dispatch's requirement
bcrypt
blockkit
blockkit==1.9.2
boto3
cachetools
chardet
click
cryptography<45,>=41.0.5
cryptography<42,>=38.0.0
duo-client
email-validator
emails
fastapi
fastapi==0.115.12
google-api-python-client
google-auth-oauthlib
h11
httpx
jinja2
jira==2.0.0
jira
joblib
jsonpath_ng
lxml==5.3.0
markdown
msal
numpy
oauth2client
openai
openai==1.77.0
pandas
pdpyras
protobuf<6.0dev,>=5.26.1
protobuf<5.0dev,>=4.21.6
psycopg2-binary
pyarrow
pydantic==1.*
pydantic==2.11.4
pydantic-extra-types==2.10.4
pyparsing
python-dateutil
python-jose
Expand All @@ -50,13 +51,14 @@ sh
slack-bolt
slack_sdk
slowapi
spacy
spacy==3.8.5
sqlalchemy-filters
sqlalchemy-utils
sqlalchemy==2.0.8
statsmodels
tabulate
tenacity
thinc==8.3.4
tiktoken
typing-extensions==4.13.2
uvicorn
Expand Down
36 changes: 26 additions & 10 deletions requirements-base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
# pip-compile --output-file=requirements-base.txt requirements-base.in
# pip-compile requirements-base.in
#
--index-url https://pypi.netflix.net/simple

Expand All @@ -18,6 +18,8 @@ aiosignal==1.3.2
# via aiohttp
alembic==1.14.1
# via -r requirements-base.in
annotated-types==0.7.0
# via pydantic
anyio==4.8.0
# via
# httpx
Expand All @@ -37,7 +39,7 @@ bcrypt==4.2.1
# via -r requirements-base.in
blis==1.2.0
# via thinc
blockkit==1.5.2
blockkit==1.9.2
# via -r requirements-base.in
boto3==1.36.19
# via -r requirements-base.in
Expand Down Expand Up @@ -83,7 +85,7 @@ confection==0.1.5
# via
# thinc
# weasel
cryptography==44.0.2
cryptography==41.0.7
# via
# -r requirements-base.in
# msal
Expand Down Expand Up @@ -117,10 +119,12 @@ duo-client==5.3.0
ecdsa==0.19.0
# via python-jose
email-validator==2.2.0
# via -r requirements-base.in
# via
# -r requirements-base.in
# pydantic
emails==0.6
# via -r requirements-base.in
fastapi==0.115.8
fastapi==0.115.12
# via -r requirements-base.in
frozenlist==1.5.0
# via
Expand Down Expand Up @@ -257,7 +261,7 @@ oauthlib[signedtoken]==3.2.2
# atlassian-python-api
# jira
# requests-oauthlib
openai==1.62.0
openai==1.77.0
# via -r requirements-base.in
packaging==24.2
# via
Expand Down Expand Up @@ -293,7 +297,7 @@ propcache==0.2.1
# yarl
proto-plus==1.26.0
# via google-api-core
protobuf==5.29.4
protobuf==4.25.7
# via
# -r requirements-base.in
# google-api-core
Expand All @@ -315,16 +319,21 @@ pyasn1-modules==0.4.1
# oauth2client
pycparser==2.22
# via cffi
pydantic==1.10.21
pydantic[email]==2.11.4
# via
# -r requirements-base.in
# blockkit
# confection
# fastapi
# openai
# pydantic-extra-types
# spacy
# thinc
# weasel
pydantic-core==2.33.2
# via pydantic
pydantic-extra-types==2.10.4
# via -r requirements-base.in
pygments==2.19.1
# via rich
pyjwt[crypto]==2.10.1
Expand Down Expand Up @@ -442,7 +451,7 @@ sniffio==1.3.1
# openai
sortedcontainers==2.4.0
# via hypothesis
spacy==3.8.4
spacy==3.8.5
# via -r requirements-base.in
spacy-legacy==3.0.12
# via spacy
Expand Down Expand Up @@ -480,7 +489,9 @@ tenacity==9.0.0
text-unidecode==1.3
# via python-slugify
thinc==8.3.4
# via spacy
# via
# -r requirements-base.in
# spacy
tiktoken==0.8.0
# via -r requirements-base.in
tomli==2.2.1
Expand All @@ -504,9 +515,14 @@ typing-extensions==4.13.2
# limits
# openai
# pydantic
# pydantic-core
# pydantic-extra-types
# schemathesis
# sqlalchemy
# typer
# typing-inspection
typing-inspection==0.4.0
# via pydantic
tzdata==2025.1
# via pandas
uritemplate==4.1.1
Expand Down
5 changes: 3 additions & 2 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#
# This file is autogenerated by pip-compile with Python 3.12
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
# pip-compile --output-file=requirements-dev.txt requirements-dev.in
# pip-compile requirements-dev.in
#
--index-url https://pypi.netflix.net/simple
--trusted-host pypi.org
Expand Down Expand Up @@ -111,6 +111,7 @@ typing-extensions==4.13.2
# via
# -r requirements-dev.in
# faker
# ipython
virtualenv==20.29.1
# via pre-commit
vulture==2.14
Expand Down
25 changes: 13 additions & 12 deletions src/dispatch/api.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from typing import List, Optional
"""This module defines the main Dispatch API endpoints."""

from fastapi import APIRouter, Depends

from pydantic import BaseModel
from starlette.responses import JSONResponse

Expand All @@ -13,6 +12,7 @@
from dispatch.case.views import router as case_router
from dispatch.case_cost.views import router as case_cost_router
from dispatch.case_cost_type.views import router as case_cost_type_router
from dispatch.cost_model.views import router as cost_model_router
from dispatch.data.alert.views import router as alert_router
from dispatch.data.query.views import router as query_router
from dispatch.data.source.data_format.views import router as source_data_format_router
Expand All @@ -23,16 +23,18 @@
from dispatch.data.source.views import router as source_router
from dispatch.definition.views import router as definition_router
from dispatch.document.views import router as document_router
from dispatch.email_templates.views import router as email_template_router
from dispatch.entity.views import router as entity_router
from dispatch.entity_type.views import router as entity_type_router
from dispatch.feedback.incident.views import router as feedback_router
from dispatch.feedback.service.views import router as service_feedback_router
from dispatch.forms.type.views import router as forms_type_router
from dispatch.forms.views import router as forms_router
from dispatch.incident.priority.views import router as incident_priority_router
from dispatch.incident.severity.views import router as incident_severity_router
from dispatch.incident.type.views import router as incident_type_router
from dispatch.incident.views import router as incident_router
from dispatch.incident_cost.views import router as incident_cost_router
from dispatch.cost_model.views import router as cost_model_router
from dispatch.incident_cost_type.views import router as incident_cost_type_router
from dispatch.incident_role.views import router as incident_role_router
from dispatch.individual.views import router as individual_contact_router
Expand All @@ -41,17 +43,10 @@
from dispatch.organization.views import router as organization_router
from dispatch.plugin.views import router as plugin_router
from dispatch.project.views import router as project_router
from dispatch.forms.views import router as forms_router
from dispatch.forms.type.views import router as forms_type_router
from dispatch.email_templates.views import router as email_template_router


from dispatch.signal.views import router as signal_router

# from dispatch.route.views import router as route_router
from dispatch.search.views import router as search_router
from dispatch.search_filter.views import router as search_filter_router
from dispatch.service.views import router as service_router
from dispatch.signal.views import router as signal_router
from dispatch.tag.views import router as tag_router
from dispatch.tag_type.views import router as tag_type_router
from dispatch.task.views import router as task_router
Expand All @@ -61,11 +56,15 @@


class ErrorMessage(BaseModel):
"""Represents a single error message."""

msg: str


class ErrorResponse(BaseModel):
detail: Optional[List[ErrorMessage]]
"""Defines the structure for API error responses."""

detail: list[ErrorMessage] | None = None


api_router = APIRouter(
Expand All @@ -84,6 +83,7 @@ class ErrorResponse(BaseModel):


def get_organization_path(organization: OrganizationSlug):
"""Dependency for validating organization slug in path."""
pass


Expand Down Expand Up @@ -253,6 +253,7 @@ def get_organization_path(organization: OrganizationSlug):

@api_router.get("/healthcheck", include_in_schema=False)
def healthcheck():
"""Simple healthcheck endpoint."""
return {"status": "ok"}


Expand Down
Loading
Loading