From fcc7ccc85e48d5e208acab2e12118488ead0bb4a Mon Sep 17 00:00:00 2001 From: Rose Yemelyanova Date: Thu, 25 Aug 2022 10:59:37 +0000 Subject: [PATCH 1/7] made new response models and ensured fastAPI was aware of each routes return type --- src/diffcalc_API/models/__init__.py | 4 +- src/diffcalc_API/models/response.py | 29 ++++++++ src/diffcalc_API/routes/constraints.py | 30 ++++---- src/diffcalc_API/routes/hkl.py | 31 ++++---- src/diffcalc_API/routes/ub.py | 97 +++++++++++++++----------- src/diffcalc_API/server.py | 10 +-- 6 files changed, 125 insertions(+), 76 deletions(-) create mode 100644 src/diffcalc_API/models/response.py diff --git a/src/diffcalc_API/models/__init__.py b/src/diffcalc_API/models/__init__.py index 76d3c37..1a46719 100644 --- a/src/diffcalc_API/models/__init__.py +++ b/src/diffcalc_API/models/__init__.py @@ -1,3 +1,3 @@ -from diffcalc_API.models import hkl, ub +from diffcalc_API.models import hkl, response, ub -__all__ = ["ub", "hkl"] +__all__ = ["ub", "hkl", "response"] diff --git a/src/diffcalc_API/models/response.py b/src/diffcalc_API/models/response.py new file mode 100644 index 0000000..cabc60c --- /dev/null +++ b/src/diffcalc_API/models/response.py @@ -0,0 +1,29 @@ +from typing import Dict, List + +from pydantic import BaseModel + +from diffcalc_API.models.ub import HklModel + + +class InfoResponse(BaseModel): + message: str + + +class StringResponse(BaseModel): + payload: str + + +class ArrayResponse(BaseModel): + payload: List[List[float]] + + +class ScanResponse(BaseModel): + payload: Dict[str, List[Dict[str, float]]] + + +class DiffractorAnglesResponse(BaseModel): + payload: List[Dict[str, float]] + + +class MillerIndicesResponse(BaseModel): + payload: HklModel diff --git a/src/diffcalc_API/routes/constraints.py b/src/diffcalc_API/routes/constraints.py index 8139d07..96e1c08 100644 --- a/src/diffcalc_API/routes/constraints.py +++ b/src/diffcalc_API/routes/constraints.py @@ -2,23 +2,24 @@ from fastapi import APIRouter, Body, Depends, Query +from diffcalc_API.models.response import InfoResponse, StringResponse from diffcalc_API.services import constraints as service from diffcalc_API.stores.protocol import HklCalcStore, get_store router = APIRouter(prefix="/constraints", tags=["constraints"]) -@router.get("/{name}") +@router.get("/{name}", response_model=StringResponse) async def get_constraints( name: str, store: HklCalcStore = Depends(get_store), collection: Optional[str] = Query(default=None, example="B07"), ): content = await service.get_constraints(name, store, collection) - return {"payload": content} + return StringResponse(payload=content) -@router.post("/{name}") +@router.post("/{name}", response_model=InfoResponse) async def set_constraints( name: str, constraints: Dict[str, float] = Body(example={"qaz": 0, "alpha": 0, "eta": 0}), @@ -26,16 +27,15 @@ async def set_constraints( collection: Optional[str] = Query(default=None, example="B07"), ): await service.set_constraints(name, constraints, store, collection) - - return { - "message": ( + return InfoResponse( + message=( f"constraints updated (replaced) for crystal {name} in " + f"collection {collection}" ) - } + ) -@router.delete("/{name}/{property}") +@router.delete("/{name}/{property}", response_model=InfoResponse) async def remove_constraint( name: str, property: str, @@ -44,15 +44,15 @@ async def remove_constraint( ): await service.remove_constraint(name, property, store, collection) - return { - "message": ( + return InfoResponse( + message=( f"unconstrained {property} for crystal {name} in " + f"collection {collection}. " ) - } + ) -@router.patch("/{name}/{property}") +@router.patch("/{name}/{property}", response_model=InfoResponse) async def set_constraint( name: str, property: str, @@ -62,9 +62,9 @@ async def set_constraint( ): await service.set_constraint(name, property, value, store, collection) - return { - "message": ( + return InfoResponse( + message=( f"constrained {property} for crystal {name} in collection " + f"{collection}. " ) - } + ) diff --git a/src/diffcalc_API/routes/hkl.py b/src/diffcalc_API/routes/hkl.py index 4201929..466ba73 100644 --- a/src/diffcalc_API/routes/hkl.py +++ b/src/diffcalc_API/routes/hkl.py @@ -4,6 +4,12 @@ from diffcalc_API.errors.hkl import InvalidSolutionBoundsError from diffcalc_API.models.hkl import SolutionConstraints +from diffcalc_API.models.response import ( + ArrayResponse, + DiffractorAnglesResponse, + MillerIndicesResponse, + ScanResponse, +) from diffcalc_API.models.ub import HklModel, PositionModel from diffcalc_API.services import hkl as service from diffcalc_API.stores.protocol import HklCalcStore, get_store @@ -11,7 +17,7 @@ router = APIRouter(prefix="/hkl", tags=["hkl"]) -@router.get("/{name}/UB") +@router.get("/{name}/UB", response_model=ArrayResponse) async def calculate_ub( name: str, tag1: Optional[str] = Query(default=None, example="refl1"), @@ -24,10 +30,10 @@ async def calculate_ub( content = await service.calculate_ub( name, store, collection, tag1, idx1, tag2, idx2 ) - return {"payload": content} + return ArrayResponse(payload=content) -@router.get("/{name}/position/lab") +@router.get("/{name}/position/lab", response_model=DiffractorAnglesResponse) async def lab_position_from_miller_indices( name: str, miller_indices: HklModel = Depends(), @@ -50,11 +56,10 @@ async def lab_position_from_miller_indices( store, collection, ) + return DiffractorAnglesResponse(payload=positions) - return {"payload": positions} - -@router.get("/{name}/position/hkl") +@router.get("/{name}/position/hkl", response_model=MillerIndicesResponse) async def miller_indices_from_lab_position( name: str, pos: PositionModel = Depends(), @@ -65,10 +70,10 @@ async def miller_indices_from_lab_position( hkl = await service.miller_indices_from_lab_position( name, pos, wavelength, store, collection ) - return {"payload": hkl} + return MillerIndicesResponse(payload=hkl) -@router.get("/{name}/scan/hkl") +@router.get("/{name}/scan/hkl", response_model=ScanResponse) async def scan_hkl( name: str, start: List[float] = Query(..., example=[1, 0, 1]), @@ -95,10 +100,10 @@ async def scan_hkl( store, collection, ) - return {"payload": scan_results} + return ScanResponse(payload=scan_results) -@router.get("/{name}/scan/wavelength") +@router.get("/{name}/scan/wavelength", response_model=ScanResponse) async def scan_wavelength( name: str, start: float = Query(..., example=1.0), @@ -118,10 +123,10 @@ async def scan_wavelength( scan_results = await service.scan_wavelength( name, start, stop, inc, hkl, solution_constraints, store, collection ) - return {"payload": scan_results} + return ScanResponse(payload=scan_results) -@router.get("/{name}/scan/{constraint}") +@router.get("/{name}/scan/{constraint}", response_model=ScanResponse) async def scan_constraint( name: str, constraint: str, @@ -153,4 +158,4 @@ async def scan_constraint( collection, ) - return {"payload": scan_results} + return ScanResponse(payload=scan_results) diff --git a/src/diffcalc_API/routes/ub.py b/src/diffcalc_API/routes/ub.py index 684d516..f8f9118 100644 --- a/src/diffcalc_API/routes/ub.py +++ b/src/diffcalc_API/routes/ub.py @@ -10,6 +10,7 @@ NoTagOrIdxProvidedError, ) from diffcalc_API.examples import ub as examples +from diffcalc_API.models.response import InfoResponse, StringResponse from diffcalc_API.models.ub import ( AddOrientationParams, AddReflectionParams, @@ -25,17 +26,17 @@ router = APIRouter(prefix="/ub", tags=["ub"]) -@router.get("/{name}") +@router.get("/{name}", response_model=StringResponse) async def get_ub( name: str, store: HklCalcStore = Depends(get_store), collection: Optional[str] = Query(default=None, example="B07"), ): content = await service.get_ub(name, store, collection) - return {"payload": content} + return StringResponse(payload=content) -@router.post("/{name}/reflection") +@router.post("/{name}/reflection", response_model=InfoResponse) async def add_reflection( name: str, params: AddReflectionParams = Body(..., example=examples.add_reflection), @@ -44,15 +45,15 @@ async def add_reflection( tag: Optional[str] = Query(default=None, example="refl1"), ): await service.add_reflection(name, params, store, collection, tag) - return { - "message": ( + return InfoResponse( + message=( f"added reflection for UB Calculation of crystal {name} in " + f"collection {collection}" ) - } + ) -@router.put("/{name}/reflection") +@router.put("/{name}/reflection", response_model=InfoResponse) async def edit_reflection( name: str, params: EditReflectionParams = Body(..., example=examples.edit_reflection), @@ -68,13 +69,15 @@ async def edit_reflection( raise BothTagAndIdxProvidedError() await service.edit_reflection(name, params, store, collection, tag, idx) - return { - "message": f"reflection of crystal {name} in collection {collection} with " - + f"{select_idx_or_tag_str(idx, tag)} edited" - } + return InfoResponse( + message=( + f"reflection of crystal {name} in collection {collection} with " + + f"{select_idx_or_tag_str(idx, tag)} edited" + ) + ) -@router.delete("/{name}/reflection") +@router.delete("/{name}/reflection", response_model=InfoResponse) async def delete_reflection( name: str, store: HklCalcStore = Depends(get_store), @@ -88,13 +91,15 @@ async def delete_reflection( raise BothTagAndIdxProvidedError() await service.delete_reflection(name, store, collection, tag, idx) - return { - "message": f"reflection of crystal {name} in collection {collection} " - + f"with {select_idx_or_tag_str(idx, tag)} deleted" - } + return InfoResponse( + message=( + f"reflection of crystal {name} in collection {collection} " + + f"with {select_idx_or_tag_str(idx, tag)} deleted" + ) + ) -@router.post("/{name}/orientation") +@router.post("/{name}/orientation", response_model=InfoResponse) async def add_orientation( name: str, params: AddOrientationParams = Body(..., example=examples.add_orientation), @@ -103,13 +108,15 @@ async def add_orientation( tag: Optional[str] = Query(default=None, example="plane"), ): await service.add_orientation(name, params, store, collection, tag) - return { - "message": f"added orientation for UB Calculation of crystal {name} in " - + f"collection {collection}" - } + return InfoResponse( + message=( + f"added orientation for UB Calculation of crystal {name} in " + + f"collection {collection}" + ) + ) -@router.put("/{name}/orientation") +@router.put("/{name}/orientation", response_model=InfoResponse) async def edit_orientation( name: str, params: EditOrientationParams = Body(..., example=examples.edit_orientation), @@ -124,13 +131,15 @@ async def edit_orientation( raise BothTagAndIdxProvidedError() await service.edit_orientation(name, params, store, collection, tag, idx) - return { - "message": f"orientation of crystal {name} in collection {collection} with " - f"{select_idx_or_tag_str(idx, tag)} edited" - } + return InfoResponse( + message=( + f"orientation of crystal {name} in collection {collection} with " + f"{select_idx_or_tag_str(idx, tag)} edited" + ) + ) -@router.delete("/{name}/orientation") +@router.delete("/{name}/orientation", response_model=InfoResponse) async def delete_orientation( name: str, store: HklCalcStore = Depends(get_store), @@ -144,13 +153,15 @@ async def delete_orientation( raise BothTagAndIdxProvidedError() await service.delete_orientation(name, store, collection, tag, idx) - return { - "message": f"orientation of crystal {name} in collection {collection} " - + f"with {select_idx_or_tag_str(idx, tag)} deleted" - } + return InfoResponse( + message=( + f"orientation of crystal {name} in collection {collection} " + + f"with {select_idx_or_tag_str(idx, tag)} deleted" + ) + ) -@router.patch("/{name}/lattice") +@router.patch("/{name}/lattice", response_model=InfoResponse) async def set_lattice( name: str, params: SetLatticeParams = Body(example=examples.set_lattice), @@ -163,13 +174,15 @@ async def set_lattice( raise InvalidSetLatticeParamsError() await service.set_lattice(name, params, store, collection) - return { - "message": f"lattice has been set for UB calculation of crystal {name} in " - + f"collection {collection}" - } + return InfoResponse( + message=( + f"lattice has been set for UB calculation of crystal {name} in " + + f"collection {collection}" + ) + ) -@router.put("/{name}/{property}") +@router.put("/{name}/{property}", response_model=InfoResponse) async def modify_property( name: str, property: str, @@ -181,7 +194,9 @@ async def modify_property( raise InvalidPropertyError() await service.modify_property(name, property, target_value, store, collection) - return { - "message": f"{property} has been set for UB calculation of crystal {name} in " - + f"collection {collection}" - } + return InfoResponse( + message=( + f"{property} has been set for UB calculation of crystal {name} in " + + f"collection {collection}" + ) + ) diff --git a/src/diffcalc_API/server.py b/src/diffcalc_API/server.py index d923ce1..f6fa7c3 100644 --- a/src/diffcalc_API/server.py +++ b/src/diffcalc_API/server.py @@ -11,6 +11,7 @@ from diffcalc_API.errors.definitions import DiffcalcAPIException from diffcalc_API.errors.hkl import responses as hkl_responses from diffcalc_API.errors.ub import responses as ub_responses +from diffcalc_API.models.response import InfoResponse from diffcalc_API.stores.protocol import get_store, setup_store logger = logging.getLogger(__name__) @@ -71,18 +72,17 @@ async def server_exceptions_middleware(request: Request, call_next): ####################################################################################### -@app.post("/{name}") +@app.post("/{name}", response_model=InfoResponse) async def create_hkl_object( name: str, store=Depends(get_store), collection: Optional[str] = Query(default=None, example="B07"), ): await store.create(name, collection) + return InfoResponse(message=f"crystal {name} in collection {collection} created") - return {"message": f"crystal {name} in collection {collection} created"} - -@app.delete("/{name}") +@app.delete("/{name}", response_model=InfoResponse) async def delete_hkl_object( name: str, store=Depends(get_store), @@ -90,4 +90,4 @@ async def delete_hkl_object( ): await store.delete(name, collection) - return {"message": f"crystal {name} in collection {collection} deleted"} + return InfoResponse(message=f"crystal {name} in collection {collection} deleted") From d29d9220768285ecae5f2c0d733d39123364da74 Mon Sep 17 00:00:00 2001 From: Rose Yemelyanova Date: Thu, 25 Aug 2022 12:13:04 +0000 Subject: [PATCH 2/7] pinning requirementslib to pass code CI checks --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 652cd80..f3c64c1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,6 +24,7 @@ package_dir = # Specify any package dependencies below. install_requires = + requirementslib < 2 diffcalc-core fastapi uvicorn From 10d8f63c8d8558ec37fa5381bb3c962bf49074c6 Mon Sep 17 00:00:00 2001 From: Rose Yemelyanova Date: Thu, 25 Aug 2022 12:15:51 +0000 Subject: [PATCH 3/7] moved pin from setup.cfg to pyproject.toml --- pyproject.toml | 2 +- setup.cfg | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ccd70c7..d3db3f9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,5 +2,5 @@ # To get a reproducible wheel, wheel must be pinned to the same version as in # dls-python3, and setuptools must produce the same dist-info. Cap setuptools # to the last version that didn't add License-File to METADATA -requires = ["setuptools<57", "wheel==0.33.1"] +requires = ["setuptools<57", "wheel==0.33.1", "requirementslib<2"] build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg index f3c64c1..652cd80 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,7 +24,6 @@ package_dir = # Specify any package dependencies below. install_requires = - requirementslib < 2 diffcalc-core fastapi uvicorn From 2e191df5c04281e4036483df70125cee65f38dbb Mon Sep 17 00:00:00 2001 From: Rose Yemelyanova Date: Thu, 25 Aug 2022 12:17:42 +0000 Subject: [PATCH 4/7] pinned requirementslib to 1.6.9, in setup.cfg --- pyproject.toml | 2 +- setup.cfg | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d3db3f9..ccd70c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,5 +2,5 @@ # To get a reproducible wheel, wheel must be pinned to the same version as in # dls-python3, and setuptools must produce the same dist-info. Cap setuptools # to the last version that didn't add License-File to METADATA -requires = ["setuptools<57", "wheel==0.33.1", "requirementslib<2"] +requires = ["setuptools<57", "wheel==0.33.1"] build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg index 652cd80..03a253c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,6 +24,7 @@ package_dir = # Specify any package dependencies below. install_requires = + requirementslib==1.6.9 diffcalc-core fastapi uvicorn From 928c6fa831b898888de1bde11a32691358ab1d98 Mon Sep 17 00:00:00 2001 From: Rose Yemelyanova Date: Thu, 25 Aug 2022 13:23:43 +0000 Subject: [PATCH 5/7] trying to rollback pipenv --- setup.cfg | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 03a253c..1c8e995 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,7 +24,6 @@ package_dir = # Specify any package dependencies below. install_requires = - requirementslib==1.6.9 diffcalc-core fastapi uvicorn @@ -44,7 +43,7 @@ dev = flake8-isort sphinx-rtd-theme-github-versions pre-commit - pipenv + pipenv==2022.8.5 typed-ast pep8-naming mock From 8cf081a748e613687885f61015e495edf6699ee1 Mon Sep 17 00:00:00 2001 From: Rose Yemelyanova Date: Thu, 25 Aug 2022 13:32:27 +0000 Subject: [PATCH 6/7] relocked --- Pipfile.lock | 424 +++++++++++++++++++++++++++------------------------ setup.cfg | 2 +- 2 files changed, 224 insertions(+), 202 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 72f0580..f1b2bc9 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -36,19 +36,19 @@ }, "diffcalc-core": { "hashes": [ - "sha256:08813edc960f7804f01373e97d836343eec3fd15f971b90139d6569ccb3edfa4", - "sha256:7784fe2a4a3b0f573dca08937dc01532fa8f7d6984c707f713a94bcb7bf1e04e" + "sha256:39c7cc2699b756ba98cacab8a41a0a8c49d7b4cfffe45b5e3391a799ed91f3f9", + "sha256:8a0838a02d718b468a3e286a1a76a51c7cfb7f1d48b2739b5aa00867bdfb9fb6" ], - "markers": "python_version >= '3.6'", - "version": "==0.3.0" + "markers": "python_version >= '3.7'", + "version": "==0.4.0" }, "fastapi": { "hashes": [ - "sha256:cf0ff6db25b91d321050c4112baab0908c90f19b40bf257f9591d2f9780d1f22", - "sha256:d337563424ceada23857f73d5abe8dae0c28e4cccb53b2af06e78b7bb4a1c7d7" + "sha256:4e542f71b5b0f4f54a82449e8bd0244305de319186a31addab976bf672206420", + "sha256:5340f6016860baf94a52be5040c3a2e94c39ddc7ab4cc7548558182db742d9d6" ], "markers": "python_full_version >= '3.6.1'", - "version": "==0.79.0" + "version": "==0.80.0" }, "h11": { "hashes": [ @@ -76,72 +76,78 @@ }, "numpy": { "hashes": [ - "sha256:1408c3527a74a0209c781ac82bde2182b0f0bf54dea6e6a363fe0cc4488a7ce7", - "sha256:173f28921b15d341afadf6c3898a34f20a0569e4ad5435297ba262ee8941e77b", - "sha256:1865fdf51446839ca3fffaab172461f2b781163f6f395f1aed256b1ddc253622", - "sha256:3119daed207e9410eaf57dcf9591fdc68045f60483d94956bee0bfdcba790953", - "sha256:35590b9c33c0f1c9732b3231bb6a72d1e4f77872390c47d50a615686ae7ed3fd", - "sha256:37e5ebebb0eb54c5b4a9b04e6f3018e16b8ef257d26c8945925ba8105008e645", - "sha256:37ece2bd095e9781a7156852e43d18044fd0d742934833335599c583618181b9", - "sha256:3ab67966c8d45d55a2bdf40701536af6443763907086c0a6d1232688e27e5447", - "sha256:47f10ab202fe4d8495ff484b5561c65dd59177949ca07975663f4494f7269e3e", - "sha256:55df0f7483b822855af67e38fb3a526e787adf189383b4934305565d71c4b148", - "sha256:5d732d17b8a9061540a10fda5bfeabca5785700ab5469a5e9b93aca5e2d3a5fb", - "sha256:68b69f52e6545af010b76516f5daaef6173e73353e3295c5cb9f96c35d755641", - "sha256:7e8229f3687cdadba2c4faef39204feb51ef7c1a9b669247d49a24f3e2e1617c", - "sha256:8002574a6b46ac3b5739a003b5233376aeac5163e5dcd43dd7ad062f3e186129", - "sha256:876f60de09734fbcb4e27a97c9a286b51284df1326b1ac5f1bf0ad3678236b22", - "sha256:9ce242162015b7e88092dccd0e854548c0926b75c7924a3495e02c6067aba1f5", - "sha256:a35c4e64dfca659fe4d0f1421fc0f05b8ed1ca8c46fb73d9e5a7f175f85696bb", - "sha256:aeba539285dcf0a1ba755945865ec61240ede5432df41d6e29fab305f4384db2", - "sha256:b15c3f1ed08df4980e02cc79ee058b788a3d0bef2fb3c9ca90bb8cbd5b8a3a04", - "sha256:c2f91f88230042a130ceb1b496932aa717dcbd665350beb821534c5c7e15881c", - "sha256:d748ef349bfef2e1194b59da37ed5a29c19ea8d7e6342019921ba2ba4fd8b624", - "sha256:e0d7447679ae9a7124385ccf0ea990bb85bb869cef217e2ea6c844b6a6855073" + "sha256:17e5226674f6ea79e14e3b91bfbc153fdf3ac13f5cc54ee7bc8fdbe820a32da0", + "sha256:2bd879d3ca4b6f39b7770829f73278b7c5e248c91d538aab1e506c628353e47f", + "sha256:4f41f5bf20d9a521f8cab3a34557cd77b6f205ab2116651f12959714494268b0", + "sha256:5593f67e66dea4e237f5af998d31a43e447786b2154ba1ad833676c788f37cde", + "sha256:5e28cd64624dc2354a349152599e55308eb6ca95a13ce6a7d5679ebff2962913", + "sha256:633679a472934b1c20a12ed0c9a6c9eb167fbb4cb89031939bfd03dd9dbc62b8", + "sha256:806970e69106556d1dd200e26647e9bee5e2b3f1814f9da104a943e8d548ca38", + "sha256:806cc25d5c43e240db709875e947076b2826f47c2c340a5a2f36da5bb10c58d6", + "sha256:8247f01c4721479e482cc2f9f7d973f3f47810cbc8c65e38fd1bbd3141cc9842", + "sha256:8ebf7e194b89bc66b78475bd3624d92980fca4e5bb86dda08d677d786fefc414", + "sha256:8ecb818231afe5f0f568c81f12ce50f2b828ff2b27487520d85eb44c71313b9e", + "sha256:8f9d84a24889ebb4c641a9b99e54adb8cab50972f0166a3abc14c3b93163f074", + "sha256:909c56c4d4341ec8315291a105169d8aae732cfb4c250fbc375a1efb7a844f8f", + "sha256:9b83d48e464f393d46e8dd8171687394d39bc5abfe2978896b77dc2604e8635d", + "sha256:ac987b35df8c2a2eab495ee206658117e9ce867acf3ccb376a19e83070e69418", + "sha256:b78d00e48261fbbd04aa0d7427cf78d18401ee0abd89c7559bbf422e5b1c7d01", + "sha256:b8b97a8a87cadcd3f94659b4ef6ec056261fa1e1c3317f4193ac231d4df70215", + "sha256:bd5b7ccae24e3d8501ee5563e82febc1771e73bd268eef82a1e8d2b4d556ae66", + "sha256:bdc02c0235b261925102b1bd586579b7158e9d0d07ecb61148a1799214a4afd5", + "sha256:be6b350dfbc7f708d9d853663772a9310783ea58f6035eec649fb9c4371b5389", + "sha256:c403c81bb8ffb1c993d0165a11493fd4bf1353d258f6997b3ee288b0a48fce77", + "sha256:cf8c6aed12a935abf2e290860af8e77b26a042eb7f2582ff83dc7ed5f963340c", + "sha256:d98addfd3c8728ee8b2c49126f3c44c703e2b005d4a95998e2167af176a9e722", + "sha256:dc76bca1ca98f4b122114435f83f1fcf3c0fe48e4e6f660e07996abf2f53903c", + "sha256:dec198619b7dbd6db58603cd256e092bcadef22a796f778bf87f8592b468441d", + "sha256:df28dda02c9328e122661f399f7655cdcbcf22ea42daa3650a26bce08a187450", + "sha256:e603ca1fb47b913942f3e660a15e55a9ebca906857edfea476ae5f0fe9b457d5", + "sha256:ecfdd68d334a6b97472ed032b5b37a30d8217c097acfff15e8452c710e775524" ], "markers": "python_version >= '3.8'", - "version": "==1.23.1" + "version": "==1.23.2" }, "pydantic": { "hashes": [ - "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f", - "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74", - "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1", - "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b", - "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537", - "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310", - "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810", - "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a", - "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761", - "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892", - "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58", - "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761", - "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195", - "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1", - "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd", - "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b", - "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee", - "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580", - "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608", - "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918", - "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380", - "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a", - "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0", - "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd", - "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728", - "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49", - "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166", - "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6", - "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131", - "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11", - "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193", - "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a", - "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd", - "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e", - "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6" + "sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44", + "sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d", + "sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84", + "sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555", + "sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7", + "sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131", + "sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8", + "sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3", + "sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56", + "sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0", + "sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4", + "sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453", + "sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044", + "sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e", + "sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15", + "sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb", + "sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001", + "sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d", + "sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3", + "sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e", + "sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f", + "sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c", + "sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b", + "sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8", + "sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567", + "sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979", + "sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326", + "sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb", + "sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f", + "sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa", + "sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747", + "sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801", + "sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55", + "sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08", + "sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76" ], "markers": "python_full_version >= '3.6.1'", - "version": "==1.9.1" + "version": "==1.9.2" }, "pymongo": { "hashes": [ @@ -270,11 +276,11 @@ }, "uvicorn": { "hashes": [ - "sha256:c19a057deb1c5bb060946e2e5c262fc01590c6529c0af2c3d9ce941e89bc30e0", - "sha256:cade07c403c397f9fe275492a48c1b869efd175d5d8a692df649e6e7e2ed8f4e" + "sha256:0abd429ebb41e604ed8d2be6c60530de3408f250e8d2d84967d85ba9e86fe3af", + "sha256:9a66e7c42a2a95222f76ec24a4b754c158261c4696e683b9dadc72b590e0311b" ], "markers": "python_version >= '3.7'", - "version": "==0.18.2" + "version": "==0.18.3" } }, "develop": { @@ -356,11 +362,11 @@ }, "charset-normalizer": { "hashes": [ - "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5", - "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413" + "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", + "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], "markers": "python_version >= '3.6'", - "version": "==2.1.0" + "version": "==2.1.1" }, "click": { "hashes": [ @@ -375,50 +381,59 @@ "toml" ], "hashes": [ - "sha256:04010af3c06ce2bfeb3b1e4e05d136f88d88c25f76cd4faff5d1fd84d11581ea", - "sha256:05de0762c1caed4a162b3e305f36cf20a548ff4da0be6766ad5c870704be3660", - "sha256:068d6f2a893af838291b8809c876973d885543411ea460f3e6886ac0ee941732", - "sha256:0a84376e4fd13cebce2c0ef8c2f037929c8307fb94af1e5dbe50272a1c651b5d", - "sha256:0e34247274bde982bbc613894d33f9e36358179db2ed231dd101c48dd298e7b0", - "sha256:0e3a41aad5919613483aad9ebd53336905cab1bd6788afd3995c2a972d89d795", - "sha256:306788fd019bb90e9cbb83d3f3c6becad1c048dd432af24f8320cf38ac085684", - "sha256:39ebd8e120cb77a06ee3d5fc26f9732670d1c397d7cd3acf02f6f62693b89b80", - "sha256:411fdd9f4203afd93b056c0868c8f9e5e16813e765de962f27e4e5798356a052", - "sha256:4822327b35cb032ff16af3bec27f73985448f08e874146b5b101e0e558b613dd", - "sha256:52f8b9fcf3c5e427d51bbab1fb92b575a9a9235d516f175b24712bcd4b5be917", - "sha256:53c8edd3b83a4ddba3d8c506f1359401e7770b30f2188f15c17a338adf5a14db", - "sha256:555a498999c44f5287cc95500486cd0d4f021af9162982cbe504d4cb388f73b5", - "sha256:59fc88bc13e30f25167e807b8cad3c41b7218ef4473a20c86fd98a7968733083", - "sha256:5a559aab40c716de80c7212295d0dc96bc1b6c719371c20dd18c5187c3155518", - "sha256:5de1e9335e2569974e20df0ce31493d315a830d7987e71a24a2a335a8d8459d3", - "sha256:6630d8d943644ea62132789940ca97d05fac83f73186eaf0930ffa715fbdab6b", - "sha256:73a10939dc345460ca0655356a470dd3de9759919186a82383c87b6eb315faf2", - "sha256:7856ea39059d75f822ff0df3a51ea6d76307c897048bdec3aad1377e4e9dca20", - "sha256:877ee5478fd78e100362aed56db47ccc5f23f6e7bb035a8896855f4c3e49bc9b", - "sha256:920a734fe3d311ca01883b4a19aa386c97b82b69fbc023458899cff0a0d621b9", - "sha256:923f9084d7e1d31b5f74c92396b05b18921ed01ee5350402b561a79dce3ea48d", - "sha256:a0d2df4227f645a879010461df2cea6b7e3fb5a97d7eafa210f7fb60345af9e8", - "sha256:a2738ba1ee544d6f294278cfb6de2dc1f9a737a780469b5366e662a218f806c3", - "sha256:a42eaaae772f14a5194f181740a67bfd48e8806394b8c67aa4399e09d0d6b5db", - "sha256:ab2b1a89d2bc7647622e9eaf06128a5b5451dccf7c242deaa31420b055716481", - "sha256:ab9ef0187d6c62b09dec83a84a3b94f71f9690784c84fd762fb3cf2d2b44c914", - "sha256:adf1a0d272633b21d645dd6e02e3293429c1141c7d65a58e4cbcd592d53b8e01", - "sha256:b104b6b1827d6a22483c469e3983a204bcf9c6bf7544bf90362c4654ebc2edf3", - "sha256:bc698580216050b5f4a34d2cdd2838b429c53314f1c4835fab7338200a8396f2", - "sha256:cdf7b83f04a313a21afb1f8730fe4dd09577fefc53bbdfececf78b2006f4268e", - "sha256:d5191d53afbe5b6059895fa7f58223d3751c42b8101fb3ce767e1a0b1a1d8f87", - "sha256:d75314b00825d70e1e34b07396e23f47ed1d4feedc0122748f9f6bd31a544840", - "sha256:e4d64304acf79766e650f7acb81d263a3ea6e2d0d04c5172b7189180ff2c023c", - "sha256:ec2ae1f398e5aca655b7084392d23e80efb31f7a660d2eecf569fb9f79b3fb94", - "sha256:eff095a5aac7011fdb51a2c82a8fae9ec5211577f4b764e1e59cfa27ceeb1b59", - "sha256:f1eda5cae434282712e40b42aaf590b773382afc3642786ac3ed39053973f61f", - "sha256:f217850ac0e046ede611312703423767ca032a7b952b5257efac963942c055de", - "sha256:f50d3a822947572496ea922ee7825becd8e3ae6fbd2400cd8236b7d64b17f285", - "sha256:fc294de50941d3da66a09dca06e206297709332050973eca17040278cb0918ff", - "sha256:ff9832434a9193fbd716fbe05f9276484e18d26cc4cf850853594bb322807ac3" + "sha256:01778769097dbd705a24e221f42be885c544bb91251747a8a3efdec6eb4788f2", + "sha256:08002f9251f51afdcc5e3adf5d5d66bb490ae893d9e21359b085f0e03390a820", + "sha256:1238b08f3576201ebf41f7c20bf59baa0d05da941b123c6656e42cdb668e9827", + "sha256:14a32ec68d721c3d714d9b105c7acf8e0f8a4f4734c811eda75ff3718570b5e3", + "sha256:15e38d853ee224e92ccc9a851457fb1e1f12d7a5df5ae44544ce7863691c7a0d", + "sha256:354df19fefd03b9a13132fa6643527ef7905712109d9c1c1903f2133d3a4e145", + "sha256:35ef1f8d8a7a275aa7410d2f2c60fa6443f4a64fae9be671ec0696a68525b875", + "sha256:4179502f210ebed3ccfe2f78bf8e2d59e50b297b598b100d6c6e3341053066a2", + "sha256:42c499c14efd858b98c4e03595bf914089b98400d30789511577aa44607a1b74", + "sha256:4b7101938584d67e6f45f0015b60e24a95bf8dea19836b1709a80342e01b472f", + "sha256:564cd0f5b5470094df06fab676c6d77547abfdcb09b6c29c8a97c41ad03b103c", + "sha256:5f444627b3664b80d078c05fe6a850dd711beeb90d26731f11d492dcbadb6973", + "sha256:6113e4df2fa73b80f77663445be6d567913fb3b82a86ceb64e44ae0e4b695de1", + "sha256:61b993f3998ee384935ee423c3d40894e93277f12482f6e777642a0141f55782", + "sha256:66e6df3ac4659a435677d8cd40e8eb1ac7219345d27c41145991ee9bf4b806a0", + "sha256:67f9346aeebea54e845d29b487eb38ec95f2ecf3558a3cffb26ee3f0dcc3e760", + "sha256:6913dddee2deff8ab2512639c5168c3e80b3ebb0f818fed22048ee46f735351a", + "sha256:6a864733b22d3081749450466ac80698fe39c91cb6849b2ef8752fd7482011f3", + "sha256:7026f5afe0d1a933685d8f2169d7c2d2e624f6255fb584ca99ccca8c0e966fd7", + "sha256:783bc7c4ee524039ca13b6d9b4186a67f8e63d91342c713e88c1865a38d0892a", + "sha256:7a98d6bf6d4ca5c07a600c7b4e0c5350cd483c85c736c522b786be90ea5bac4f", + "sha256:8d032bfc562a52318ae05047a6eb801ff31ccee172dc0d2504614e911d8fa83e", + "sha256:98c0b9e9b572893cdb0a00e66cf961a238f8d870d4e1dc8e679eb8bdc2eb1b86", + "sha256:9c7b9b498eb0c0d48b4c2abc0e10c2d78912203f972e0e63e3c9dc21f15abdaa", + "sha256:9cc4f107009bca5a81caef2fca843dbec4215c05e917a59dec0c8db5cff1d2aa", + "sha256:9d6e1f3185cbfd3d91ac77ea065d85d5215d3dfa45b191d14ddfcd952fa53796", + "sha256:a095aa0a996ea08b10580908e88fbaf81ecf798e923bbe64fb98d1807db3d68a", + "sha256:a3b2752de32c455f2521a51bd3ffb53c5b3ae92736afde67ce83477f5c1dd928", + "sha256:ab066f5ab67059d1f1000b5e1aa8bbd75b6ed1fc0014559aea41a9eb66fc2ce0", + "sha256:c1328d0c2f194ffda30a45f11058c02410e679456276bfa0bbe0b0ee87225fac", + "sha256:c35cca192ba700979d20ac43024a82b9b32a60da2f983bec6c0f5b84aead635c", + "sha256:cbbb0e4cd8ddcd5ef47641cfac97d8473ab6b132dd9a46bacb18872828031685", + "sha256:cdbb0d89923c80dbd435b9cf8bba0ff55585a3cdb28cbec65f376c041472c60d", + "sha256:cf2afe83a53f77aec067033199797832617890e15bed42f4a1a93ea24794ae3e", + "sha256:d5dd4b8e9cd0deb60e6fcc7b0647cbc1da6c33b9e786f9c79721fd303994832f", + "sha256:dfa0b97eb904255e2ab24166071b27408f1f69c8fbda58e9c0972804851e0558", + "sha256:e16c45b726acb780e1e6f88b286d3c10b3914ab03438f32117c4aa52d7f30d58", + "sha256:e1fabd473566fce2cf18ea41171d92814e4ef1495e04471786cbc943b89a3781", + "sha256:e3d3c4cc38b2882f9a15bafd30aec079582b819bec1b8afdbde8f7797008108a", + "sha256:e431e305a1f3126477abe9a184624a85308da8edf8486a863601d58419d26ffa", + "sha256:e7b4da9bafad21ea45a714d3ea6f3e1679099e420c8741c74905b92ee9bfa7cc", + "sha256:ee2b2fb6eb4ace35805f434e0f6409444e1466a47f620d1d5763a22600f0f892", + "sha256:ee6ae6bbcac0786807295e9687169fba80cb0617852b2fa118a99667e8e6815d", + "sha256:ef6f44409ab02e202b31a05dd6666797f9de2aa2b4b3534e9d450e42dea5e817", + "sha256:f67cf9f406cf0d2f08a3515ce2db5b82625a7257f88aad87904674def6ddaec1", + "sha256:f855b39e4f75abd0dfbcf74a82e84ae3fc260d523fcb3532786bcbbcb158322c", + "sha256:fc600f6ec19b273da1d85817eda339fb46ce9eef3e89f220055d8696e0a06908", + "sha256:fcbe3d9a53e013f8ab88734d7e517eb2cd06b7e689bedf22c0eb68db5e4a0a19", + "sha256:fde17bc42e0716c94bf19d92e4c9f5a00c5feb401f5bc01101fdf2a8b7cacf60", + "sha256:ff934ced84054b9018665ca3967fc48e1ac99e811f6cc99ea65978e1d384454b" ], "markers": "python_version >= '3.7'", - "version": "==6.4.3" + "version": "==6.4.4" }, "diffcalc-api": { "editable": true, @@ -426,11 +441,11 @@ }, "diffcalc-core": { "hashes": [ - "sha256:08813edc960f7804f01373e97d836343eec3fd15f971b90139d6569ccb3edfa4", - "sha256:7784fe2a4a3b0f573dca08937dc01532fa8f7d6984c707f713a94bcb7bf1e04e" + "sha256:39c7cc2699b756ba98cacab8a41a0a8c49d7b4cfffe45b5e3391a799ed91f3f9", + "sha256:8a0838a02d718b468a3e286a1a76a51c7cfb7f1d48b2739b5aa00867bdfb9fb6" ], - "markers": "python_version >= '3.6'", - "version": "==0.3.0" + "markers": "python_version >= '3.7'", + "version": "==0.4.0" }, "distlib": { "hashes": [ @@ -449,11 +464,11 @@ }, "fastapi": { "hashes": [ - "sha256:cf0ff6db25b91d321050c4112baab0908c90f19b40bf257f9591d2f9780d1f22", - "sha256:d337563424ceada23857f73d5abe8dae0c28e4cccb53b2af06e78b7bb4a1c7d7" + "sha256:4e542f71b5b0f4f54a82449e8bd0244305de319186a31addab976bf672206420", + "sha256:5340f6016860baf94a52be5040c3a2e94c39ddc7ab4cc7548558182db742d9d6" ], "markers": "python_full_version >= '3.6.1'", - "version": "==0.79.0" + "version": "==0.80.0" }, "filelock": { "hashes": [ @@ -656,31 +671,37 @@ }, "numpy": { "hashes": [ - "sha256:1408c3527a74a0209c781ac82bde2182b0f0bf54dea6e6a363fe0cc4488a7ce7", - "sha256:173f28921b15d341afadf6c3898a34f20a0569e4ad5435297ba262ee8941e77b", - "sha256:1865fdf51446839ca3fffaab172461f2b781163f6f395f1aed256b1ddc253622", - "sha256:3119daed207e9410eaf57dcf9591fdc68045f60483d94956bee0bfdcba790953", - "sha256:35590b9c33c0f1c9732b3231bb6a72d1e4f77872390c47d50a615686ae7ed3fd", - "sha256:37e5ebebb0eb54c5b4a9b04e6f3018e16b8ef257d26c8945925ba8105008e645", - "sha256:37ece2bd095e9781a7156852e43d18044fd0d742934833335599c583618181b9", - "sha256:3ab67966c8d45d55a2bdf40701536af6443763907086c0a6d1232688e27e5447", - "sha256:47f10ab202fe4d8495ff484b5561c65dd59177949ca07975663f4494f7269e3e", - "sha256:55df0f7483b822855af67e38fb3a526e787adf189383b4934305565d71c4b148", - "sha256:5d732d17b8a9061540a10fda5bfeabca5785700ab5469a5e9b93aca5e2d3a5fb", - "sha256:68b69f52e6545af010b76516f5daaef6173e73353e3295c5cb9f96c35d755641", - "sha256:7e8229f3687cdadba2c4faef39204feb51ef7c1a9b669247d49a24f3e2e1617c", - "sha256:8002574a6b46ac3b5739a003b5233376aeac5163e5dcd43dd7ad062f3e186129", - "sha256:876f60de09734fbcb4e27a97c9a286b51284df1326b1ac5f1bf0ad3678236b22", - "sha256:9ce242162015b7e88092dccd0e854548c0926b75c7924a3495e02c6067aba1f5", - "sha256:a35c4e64dfca659fe4d0f1421fc0f05b8ed1ca8c46fb73d9e5a7f175f85696bb", - "sha256:aeba539285dcf0a1ba755945865ec61240ede5432df41d6e29fab305f4384db2", - "sha256:b15c3f1ed08df4980e02cc79ee058b788a3d0bef2fb3c9ca90bb8cbd5b8a3a04", - "sha256:c2f91f88230042a130ceb1b496932aa717dcbd665350beb821534c5c7e15881c", - "sha256:d748ef349bfef2e1194b59da37ed5a29c19ea8d7e6342019921ba2ba4fd8b624", - "sha256:e0d7447679ae9a7124385ccf0ea990bb85bb869cef217e2ea6c844b6a6855073" + "sha256:17e5226674f6ea79e14e3b91bfbc153fdf3ac13f5cc54ee7bc8fdbe820a32da0", + "sha256:2bd879d3ca4b6f39b7770829f73278b7c5e248c91d538aab1e506c628353e47f", + "sha256:4f41f5bf20d9a521f8cab3a34557cd77b6f205ab2116651f12959714494268b0", + "sha256:5593f67e66dea4e237f5af998d31a43e447786b2154ba1ad833676c788f37cde", + "sha256:5e28cd64624dc2354a349152599e55308eb6ca95a13ce6a7d5679ebff2962913", + "sha256:633679a472934b1c20a12ed0c9a6c9eb167fbb4cb89031939bfd03dd9dbc62b8", + "sha256:806970e69106556d1dd200e26647e9bee5e2b3f1814f9da104a943e8d548ca38", + "sha256:806cc25d5c43e240db709875e947076b2826f47c2c340a5a2f36da5bb10c58d6", + "sha256:8247f01c4721479e482cc2f9f7d973f3f47810cbc8c65e38fd1bbd3141cc9842", + "sha256:8ebf7e194b89bc66b78475bd3624d92980fca4e5bb86dda08d677d786fefc414", + "sha256:8ecb818231afe5f0f568c81f12ce50f2b828ff2b27487520d85eb44c71313b9e", + "sha256:8f9d84a24889ebb4c641a9b99e54adb8cab50972f0166a3abc14c3b93163f074", + "sha256:909c56c4d4341ec8315291a105169d8aae732cfb4c250fbc375a1efb7a844f8f", + "sha256:9b83d48e464f393d46e8dd8171687394d39bc5abfe2978896b77dc2604e8635d", + "sha256:ac987b35df8c2a2eab495ee206658117e9ce867acf3ccb376a19e83070e69418", + "sha256:b78d00e48261fbbd04aa0d7427cf78d18401ee0abd89c7559bbf422e5b1c7d01", + "sha256:b8b97a8a87cadcd3f94659b4ef6ec056261fa1e1c3317f4193ac231d4df70215", + "sha256:bd5b7ccae24e3d8501ee5563e82febc1771e73bd268eef82a1e8d2b4d556ae66", + "sha256:bdc02c0235b261925102b1bd586579b7158e9d0d07ecb61148a1799214a4afd5", + "sha256:be6b350dfbc7f708d9d853663772a9310783ea58f6035eec649fb9c4371b5389", + "sha256:c403c81bb8ffb1c993d0165a11493fd4bf1353d258f6997b3ee288b0a48fce77", + "sha256:cf8c6aed12a935abf2e290860af8e77b26a042eb7f2582ff83dc7ed5f963340c", + "sha256:d98addfd3c8728ee8b2c49126f3c44c703e2b005d4a95998e2167af176a9e722", + "sha256:dc76bca1ca98f4b122114435f83f1fcf3c0fe48e4e6f660e07996abf2f53903c", + "sha256:dec198619b7dbd6db58603cd256e092bcadef22a796f778bf87f8592b468441d", + "sha256:df28dda02c9328e122661f399f7655cdcbcf22ea42daa3650a26bce08a187450", + "sha256:e603ca1fb47b913942f3e660a15e55a9ebca906857edfea476ae5f0fe9b457d5", + "sha256:ecfdd68d334a6b97472ed032b5b37a30d8217c097acfff15e8452c710e775524" ], "markers": "python_version >= '3.8'", - "version": "==1.23.1" + "version": "==1.23.2" }, "packaging": { "hashes": [ @@ -699,18 +720,19 @@ }, "pep8-naming": { "hashes": [ - "sha256:3af77cdaa9c7965f7c85a56cd579354553c9bbd3fdf3078a776f12db54dd6944", - "sha256:f7867c1a464fe769be4f972ef7b79d6df1d9aff1b1f04ecf738d471963d3ab9c" + "sha256:59e29e55c478db69cffbe14ab24b5bd2cd615c0413edf790d47d3fb7ba9a4e23", + "sha256:93eef62f525fd12a6f8c98f4dcc17fa70baae2f37fa1f73bec00e3e44392fa48" ], - "version": "==0.13.1" + "markers": "python_version >= '3.7'", + "version": "==0.13.2" }, "pipenv": { "hashes": [ - "sha256:6cc26b3b2095c2fbc71a5157443e98d80f779b0613e201bf77f745258ee036fb", - "sha256:e9333cdd365aeb9c3f9460ac2d84c4750e3ffa8e766fe3d5de03d4496b55d851" + "sha256:edbff81766d4328115b28738df0e5240cb2299a34ff0c60d524ad2855df18c69", + "sha256:f05d87a4fd76fc02f8cf3b0b179f00889e82d6d7204a4ea9ebcf534965956ecc" ], "markers": "python_version >= '3.7'", - "version": "==2022.8.5" + "version": "==2022.8.24" }, "platformdirs": { "hashes": [ @@ -754,44 +776,44 @@ }, "pydantic": { "hashes": [ - "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f", - "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74", - "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1", - "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b", - "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537", - "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310", - "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810", - "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a", - "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761", - "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892", - "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58", - "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761", - "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195", - "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1", - "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd", - "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b", - "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee", - "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580", - "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608", - "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918", - "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380", - "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a", - "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0", - "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd", - "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728", - "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49", - "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166", - "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6", - "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131", - "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11", - "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193", - "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a", - "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd", - "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e", - "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6" + "sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44", + "sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d", + "sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84", + "sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555", + "sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7", + "sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131", + "sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8", + "sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3", + "sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56", + "sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0", + "sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4", + "sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453", + "sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044", + "sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e", + "sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15", + "sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb", + "sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001", + "sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d", + "sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3", + "sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e", + "sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f", + "sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c", + "sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b", + "sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8", + "sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567", + "sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979", + "sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326", + "sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb", + "sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f", + "sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa", + "sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747", + "sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801", + "sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55", + "sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08", + "sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76" ], "markers": "python_full_version >= '3.6.1'", - "version": "==1.9.1" + "version": "==1.9.2" }, "pyflakes": { "hashes": [ @@ -803,11 +825,11 @@ }, "pygments": { "hashes": [ - "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb", - "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519" + "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1", + "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42" ], "markers": "python_version >= '3.6'", - "version": "==2.12.0" + "version": "==2.13.0" }, "pymongo": { "hashes": [ @@ -907,10 +929,10 @@ }, "pytz": { "hashes": [ - "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7", - "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c" + "sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197", + "sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5" ], - "version": "==2022.1" + "version": "==2022.2.1" }, "pyyaml": { "hashes": [ @@ -990,11 +1012,11 @@ }, "setuptools": { "hashes": [ - "sha256:73bfae4791da7c1c56882ab17577d00f7a37a0347162aeb9360058de0dc25083", - "sha256:abcb76aa4decd7a17cbe0e4b31bdf549d106ba7f668e87e0860f5f7b84b9b3fe" + "sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82", + "sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57" ], "markers": "python_version >= '3.7'", - "version": "==63.4.2" + "version": "==65.3.0" }, "sniffio": { "hashes": [ @@ -1147,19 +1169,19 @@ }, "urllib3": { "hashes": [ - "sha256:c33ccba33c819596124764c23a97d25f32b28433ba0dedeb77d873a38722c9bc", - "sha256:ea6e8fb210b19d950fab93b60c9009226c63a28808bc8386e05301e25883ac0a" + "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", + "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", - "version": "==1.26.11" + "version": "==1.26.12" }, "uvicorn": { "hashes": [ - "sha256:c19a057deb1c5bb060946e2e5c262fc01590c6529c0af2c3d9ce941e89bc30e0", - "sha256:cade07c403c397f9fe275492a48c1b869efd175d5d8a692df649e6e7e2ed8f4e" + "sha256:0abd429ebb41e604ed8d2be6c60530de3408f250e8d2d84967d85ba9e86fe3af", + "sha256:9a66e7c42a2a95222f76ec24a4b754c158261c4696e683b9dadc72b590e0311b" ], "markers": "python_version >= '3.7'", - "version": "==0.18.2" + "version": "==0.18.3" }, "virtualenv": { "hashes": [ diff --git a/setup.cfg b/setup.cfg index 1c8e995..652cd80 100644 --- a/setup.cfg +++ b/setup.cfg @@ -43,7 +43,7 @@ dev = flake8-isort sphinx-rtd-theme-github-versions pre-commit - pipenv==2022.8.5 + pipenv typed-ast pep8-naming mock From ac40c10cb485d51cdbbe5aa2101c44298248fdd8 Mon Sep 17 00:00:00 2001 From: Rose Yemelyanova Date: Thu, 25 Aug 2022 14:38:46 +0000 Subject: [PATCH 7/7] pinning setuptools --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 652cd80..91ea339 100644 --- a/setup.cfg +++ b/setup.cfg @@ -29,6 +29,7 @@ install_requires = uvicorn pymongo motor + setuptools==63.4.2 [options.extras_require] # For development tests/docs