payi 0.1.0a110__py3-none-any.whl → 0.1.0a137__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. payi/__init__.py +3 -1
  2. payi/_base_client.py +12 -12
  3. payi/_client.py +8 -8
  4. payi/_compat.py +48 -48
  5. payi/_models.py +87 -59
  6. payi/_qs.py +7 -7
  7. payi/_streaming.py +4 -6
  8. payi/_types.py +53 -12
  9. payi/_utils/__init__.py +9 -2
  10. payi/_utils/_compat.py +45 -0
  11. payi/_utils/_datetime_parse.py +136 -0
  12. payi/_utils/_sync.py +3 -31
  13. payi/_utils/_transform.py +13 -3
  14. payi/_utils/_typing.py +6 -1
  15. payi/_utils/_utils.py +5 -6
  16. payi/_version.py +1 -1
  17. payi/lib/AnthropicInstrumentor.py +83 -57
  18. payi/lib/BedrockInstrumentor.py +292 -57
  19. payi/lib/GoogleGenAiInstrumentor.py +18 -31
  20. payi/lib/OpenAIInstrumentor.py +56 -72
  21. payi/lib/ProviderRequest.py +216 -0
  22. payi/lib/StreamWrappers.py +379 -0
  23. payi/lib/VertexInstrumentor.py +18 -37
  24. payi/lib/VertexRequest.py +16 -2
  25. payi/lib/data/cohere_embed_english_v3.json +30706 -0
  26. payi/lib/helpers.py +53 -1
  27. payi/lib/instrument.py +404 -668
  28. payi/resources/categories/__init__.py +0 -14
  29. payi/resources/categories/categories.py +25 -53
  30. payi/resources/categories/resources.py +27 -23
  31. payi/resources/ingest.py +126 -132
  32. payi/resources/limits/__init__.py +14 -14
  33. payi/resources/limits/limits.py +58 -58
  34. payi/resources/limits/properties.py +171 -0
  35. payi/resources/requests/request_id/properties.py +8 -8
  36. payi/resources/requests/request_id/result.py +3 -3
  37. payi/resources/requests/response_id/properties.py +8 -8
  38. payi/resources/requests/response_id/result.py +3 -3
  39. payi/resources/use_cases/definitions/definitions.py +27 -27
  40. payi/resources/use_cases/definitions/kpis.py +23 -23
  41. payi/resources/use_cases/definitions/limit_config.py +14 -14
  42. payi/resources/use_cases/definitions/version.py +3 -3
  43. payi/resources/use_cases/kpis.py +15 -15
  44. payi/resources/use_cases/properties.py +6 -6
  45. payi/resources/use_cases/use_cases.py +7 -7
  46. payi/types/__init__.py +2 -0
  47. payi/types/bulk_ingest_response.py +3 -20
  48. payi/types/categories/__init__.py +0 -1
  49. payi/types/categories/resource_list_params.py +5 -1
  50. payi/types/category_list_resources_params.py +5 -1
  51. payi/types/category_resource_response.py +31 -1
  52. payi/types/ingest_event_param.py +7 -6
  53. payi/types/ingest_units_params.py +5 -4
  54. payi/types/limit_create_params.py +3 -3
  55. payi/types/limit_list_response.py +1 -3
  56. payi/types/limit_response.py +1 -3
  57. payi/types/limits/__init__.py +2 -9
  58. payi/types/limits/{tag_remove_params.py → property_update_params.py} +4 -5
  59. payi/types/limits/{tag_delete_response.py → property_update_response.py} +3 -3
  60. payi/types/requests/request_id/property_update_params.py +2 -2
  61. payi/types/requests/response_id/property_update_params.py +2 -2
  62. payi/types/shared/__init__.py +2 -0
  63. payi/types/shared/api_error.py +18 -0
  64. payi/types/shared/pay_i_common_models_budget_management_create_limit_base.py +3 -3
  65. payi/types/shared/properties_request.py +11 -0
  66. payi/types/shared/xproxy_result.py +2 -0
  67. payi/types/shared_params/pay_i_common_models_budget_management_create_limit_base.py +3 -3
  68. payi/types/use_cases/definitions/limit_config_create_params.py +3 -3
  69. payi/types/use_cases/property_update_params.py +2 -2
  70. {payi-0.1.0a110.dist-info → payi-0.1.0a137.dist-info}/METADATA +6 -6
  71. {payi-0.1.0a110.dist-info → payi-0.1.0a137.dist-info}/RECORD +73 -75
  72. payi/resources/categories/fixed_cost_resources.py +0 -196
  73. payi/resources/limits/tags.py +0 -507
  74. payi/types/categories/fixed_cost_resource_create_params.py +0 -21
  75. payi/types/limits/limit_tags.py +0 -16
  76. payi/types/limits/tag_create_params.py +0 -13
  77. payi/types/limits/tag_create_response.py +0 -10
  78. payi/types/limits/tag_list_response.py +0 -10
  79. payi/types/limits/tag_remove_response.py +0 -10
  80. payi/types/limits/tag_update_params.py +0 -13
  81. payi/types/limits/tag_update_response.py +0 -10
  82. {payi-0.1.0a110.dist-info → payi-0.1.0a137.dist-info}/WHEEL +0 -0
  83. {payi-0.1.0a110.dist-info → payi-0.1.0a137.dist-info}/licenses/LICENSE +0 -0
@@ -4,4 +4,3 @@ from __future__ import annotations
4
4
 
5
5
  from .resource_list_params import ResourceListParams as ResourceListParams
6
6
  from .resource_create_params import ResourceCreateParams as ResourceCreateParams
7
- from .fixed_cost_resource_create_params import FixedCostResourceCreateParams as FixedCostResourceCreateParams
@@ -2,7 +2,9 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing_extensions import Required, TypedDict
5
+ from typing_extensions import Required, Annotated, TypedDict
6
+
7
+ from ..._utils import PropertyInfo
6
8
 
7
9
  __all__ = ["ResourceListParams"]
8
10
 
@@ -10,6 +12,8 @@ __all__ = ["ResourceListParams"]
10
12
  class ResourceListParams(TypedDict, total=False):
11
13
  category: Required[str]
12
14
 
15
+ active: Annotated[bool, PropertyInfo(alias="Active")]
16
+
13
17
  cursor: str
14
18
 
15
19
  limit: int
@@ -2,12 +2,16 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing_extensions import TypedDict
5
+ from typing_extensions import Annotated, TypedDict
6
+
7
+ from .._utils import PropertyInfo
6
8
 
7
9
  __all__ = ["CategoryListResourcesParams"]
8
10
 
9
11
 
10
12
  class CategoryListResourcesParams(TypedDict, total=False):
13
+ active: Annotated[bool, PropertyInfo(alias="Active")]
14
+
11
15
  cursor: str
12
16
 
13
17
  limit: int
@@ -3,9 +3,11 @@
3
3
  from typing import Dict, Optional
4
4
  from datetime import datetime
5
5
 
6
+ from pydantic import Field as FieldInfo
7
+
6
8
  from .._models import BaseModel
7
9
 
8
- __all__ = ["CategoryResourceResponse", "Units"]
10
+ __all__ = ["CategoryResourceResponse", "Units", "AwsBedrockResource", "AzureResource", "GoogleVertexResource"]
9
11
 
10
12
 
11
13
  class Units(BaseModel):
@@ -14,7 +16,21 @@ class Units(BaseModel):
14
16
  output_price: Optional[float] = None
15
17
 
16
18
 
19
+ class AwsBedrockResource(BaseModel):
20
+ aws_model_units: int = FieldInfo(alias="model_units")
21
+
22
+
23
+ class AzureResource(BaseModel):
24
+ ptus: int
25
+
26
+
27
+ class GoogleVertexResource(BaseModel):
28
+ gsus: int
29
+
30
+
17
31
  class CategoryResourceResponse(BaseModel):
32
+ active: bool
33
+
18
34
  category: str
19
35
 
20
36
  proxy_allowed: bool
@@ -27,12 +43,24 @@ class CategoryResourceResponse(BaseModel):
27
43
 
28
44
  units: Dict[str, Units]
29
45
 
46
+ aliased_resource: Optional[str] = None
47
+
48
+ aws_bedrock_resource: Optional[AwsBedrockResource] = None
49
+
50
+ azure_resource: Optional[AzureResource] = None
51
+
30
52
  character_billing: Optional[bool] = None
31
53
 
32
54
  cost_per_hour: Optional[float] = None
33
55
 
34
56
  deprecated_timestamp: Optional[datetime] = None
35
57
 
58
+ description: Optional[str] = None
59
+
60
+ end_timestamp: Optional[datetime] = None
61
+
62
+ google_vertex_resource: Optional[GoogleVertexResource] = None
63
+
36
64
  large_context_threshold: Optional[int] = None
37
65
 
38
66
  max_input_units: Optional[int] = None
@@ -40,3 +68,5 @@ class CategoryResourceResponse(BaseModel):
40
68
  max_output_units: Optional[int] = None
41
69
 
42
70
  max_total_units: Optional[int] = None
71
+
72
+ reservation_id: Optional[str] = None
@@ -2,10 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict, List, Union, Iterable, Optional
5
+ from typing import Dict, Union, Iterable, Optional
6
6
  from datetime import datetime
7
7
  from typing_extensions import Required, Annotated, TypedDict
8
8
 
9
+ from .._types import SequenceNotStr
9
10
  from .._utils import PropertyInfo
10
11
  from .shared_params.ingest_units import IngestUnits
11
12
  from .pay_i_common_models_api_router_header_info_param import PayICommonModelsAPIRouterHeaderInfoParam
@@ -32,9 +33,9 @@ class IngestEventParam(TypedDict, total=False):
32
33
 
33
34
  http_status_code: Optional[int]
34
35
 
35
- limit_ids: Optional[List[str]]
36
+ limit_ids: Optional[SequenceNotStr[str]]
36
37
 
37
- properties: Optional[Dict[str, str]]
38
+ properties: Optional[Dict[str, Optional[str]]]
38
39
 
39
40
  provider_request_headers: Optional[Iterable[PayICommonModelsAPIRouterHeaderInfoParam]]
40
41
 
@@ -48,11 +49,11 @@ class IngestEventParam(TypedDict, total=False):
48
49
 
49
50
  provider_response_id: Optional[str]
50
51
 
51
- provider_response_json: Union[str, List[str], None]
52
+ provider_response_json: Union[str, SequenceNotStr[str], None]
52
53
 
53
54
  provider_uri: Optional[str]
54
55
 
55
- request_tags: Optional[List[str]]
56
+ request_tags: Optional[SequenceNotStr[str]]
56
57
 
57
58
  resource: Optional[str]
58
59
 
@@ -64,7 +65,7 @@ class IngestEventParam(TypedDict, total=False):
64
65
 
65
66
  use_case_name: Optional[str]
66
67
 
67
- use_case_properties: Optional[Dict[str, str]]
68
+ use_case_properties: Optional[Dict[str, Optional[str]]]
68
69
 
69
70
  use_case_step: Optional[str]
70
71
 
@@ -2,10 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict, List, Union, Iterable, Optional
5
+ from typing import Dict, Union, Iterable, Optional
6
6
  from datetime import datetime
7
7
  from typing_extensions import Required, Annotated, TypedDict
8
8
 
9
+ from .._types import SequenceNotStr
9
10
  from .._utils import PropertyInfo
10
11
  from .shared_params.ingest_units import IngestUnits
11
12
  from .pay_i_common_models_api_router_header_info_param import PayICommonModelsAPIRouterHeaderInfoParam
@@ -24,7 +25,7 @@ class IngestUnitsParams(TypedDict, total=False):
24
25
 
25
26
  http_status_code: Optional[int]
26
27
 
27
- properties: Optional[Dict[str, str]]
28
+ properties: Optional[Dict[str, Optional[str]]]
28
29
 
29
30
  provider_request_headers: Optional[Iterable[PayICommonModelsAPIRouterHeaderInfoParam]]
30
31
 
@@ -38,7 +39,7 @@ class IngestUnitsParams(TypedDict, total=False):
38
39
 
39
40
  provider_response_id: Optional[str]
40
41
 
41
- provider_response_json: Union[str, List[str], None]
42
+ provider_response_json: Union[str, SequenceNotStr[str], None]
42
43
 
43
44
  provider_uri: Optional[str]
44
45
 
@@ -48,7 +49,7 @@ class IngestUnitsParams(TypedDict, total=False):
48
49
 
49
50
  time_to_first_token_ms: Optional[int]
50
51
 
51
- use_case_properties: Optional[Dict[str, str]]
52
+ use_case_properties: Optional[Dict[str, Optional[str]]]
52
53
 
53
54
  limit_ids: Annotated[Union[list[str], None], PropertyInfo(alias="xProxy-Limit-IDs")]
54
55
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Optional
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Literal, Required, TypedDict
7
7
 
8
8
  __all__ = ["LimitCreateParams"]
@@ -15,8 +15,8 @@ class LimitCreateParams(TypedDict, total=False):
15
15
 
16
16
  limit_id: Optional[str]
17
17
 
18
- limit_tags: Optional[List[str]]
19
-
20
18
  limit_type: Literal["block", "allow"]
21
19
 
20
+ properties: Optional[Dict[str, Optional[str]]]
21
+
22
22
  threshold: Optional[float]
@@ -1,6 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import List, Optional
3
+ from typing import Optional
4
4
  from datetime import datetime
5
5
  from typing_extensions import Literal
6
6
 
@@ -25,6 +25,4 @@ class LimitListResponse(BaseModel):
25
25
 
26
26
  totals: TotalCostData
27
27
 
28
- limit_tags: Optional[List[str]] = None
29
-
30
28
  threshold: Optional[float] = None
@@ -1,6 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import List, Optional
3
+ from typing import Optional
4
4
  from datetime import datetime
5
5
  from typing_extensions import Literal
6
6
 
@@ -25,8 +25,6 @@ class Limit(BaseModel):
25
25
 
26
26
  totals: TotalCostData
27
27
 
28
- limit_tags: Optional[List[str]] = None
29
-
30
28
  threshold: Optional[float] = None
31
29
 
32
30
 
@@ -2,12 +2,5 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from .limit_tags import LimitTags as LimitTags
6
- from .tag_create_params import TagCreateParams as TagCreateParams
7
- from .tag_list_response import TagListResponse as TagListResponse
8
- from .tag_remove_params import TagRemoveParams as TagRemoveParams
9
- from .tag_update_params import TagUpdateParams as TagUpdateParams
10
- from .tag_create_response import TagCreateResponse as TagCreateResponse
11
- from .tag_delete_response import TagDeleteResponse as TagDeleteResponse
12
- from .tag_remove_response import TagRemoveResponse as TagRemoveResponse
13
- from .tag_update_response import TagUpdateResponse as TagUpdateResponse
5
+ from .property_update_params import PropertyUpdateParams as PropertyUpdateParams
6
+ from .property_update_response import PropertyUpdateResponse as PropertyUpdateResponse
@@ -2,12 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Required, TypedDict
7
7
 
8
- __all__ = ["TagRemoveParams"]
8
+ __all__ = ["PropertyUpdateParams"]
9
9
 
10
10
 
11
- class TagRemoveParams(TypedDict, total=False):
12
- limit_tags: Required[List[str]]
13
- """List of limit tags"""
11
+ class PropertyUpdateParams(TypedDict, total=False):
12
+ properties: Required[Dict[str, Optional[str]]]
@@ -3,8 +3,8 @@
3
3
  from typing import List
4
4
  from typing_extensions import TypeAlias
5
5
 
6
- from .limit_tags import LimitTags
6
+ from ..limit_response import LimitResponse
7
7
 
8
- __all__ = ["TagDeleteResponse"]
8
+ __all__ = ["PropertyUpdateResponse"]
9
9
 
10
- TagDeleteResponse: TypeAlias = List[LimitTags]
10
+ PropertyUpdateResponse: TypeAlias = List[LimitResponse]
@@ -2,11 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Required, TypedDict
7
7
 
8
8
  __all__ = ["PropertyUpdateParams"]
9
9
 
10
10
 
11
11
  class PropertyUpdateParams(TypedDict, total=False):
12
- properties: Required[Dict[str, str]]
12
+ properties: Required[Dict[str, Optional[str]]]
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Required, TypedDict
7
7
 
8
8
  __all__ = ["PropertyUpdateParams"]
@@ -11,4 +11,4 @@ __all__ = ["PropertyUpdateParams"]
11
11
  class PropertyUpdateParams(TypedDict, total=False):
12
12
  category: Required[str]
13
13
 
14
- properties: Required[Dict[str, str]]
14
+ properties: Required[Dict[str, Optional[str]]]
@@ -1,8 +1,10 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
+ from .api_error import APIError as APIError
3
4
  from .ingest_units import IngestUnits as IngestUnits
4
5
  from .xproxy_error import XproxyError as XproxyError
5
6
  from .xproxy_result import XproxyResult as XproxyResult
7
+ from .properties_request import PropertiesRequest as PropertiesRequest
6
8
  from .properties_response import PropertiesResponse as PropertiesResponse
7
9
  from .pay_i_common_models_budget_management_cost_details_base import (
8
10
  PayICommonModelsBudgetManagementCostDetailsBase as PayICommonModelsBudgetManagementCostDetailsBase,
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Optional
4
+
5
+ from pydantic import Field as FieldInfo
6
+
7
+ from ..._models import BaseModel
8
+ from .xproxy_error import XproxyError
9
+
10
+ __all__ = ["APIError"]
11
+
12
+
13
+ class APIError(BaseModel):
14
+ message: str
15
+
16
+ status_code: int = FieldInfo(alias="statusCode")
17
+
18
+ xproxy_error: Optional[XproxyError] = None
@@ -1,6 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import List, Optional
3
+ from typing import Dict, Optional
4
4
  from typing_extensions import Literal
5
5
 
6
6
  from ..._models import BaseModel
@@ -11,8 +11,8 @@ __all__ = ["PayICommonModelsBudgetManagementCreateLimitBase"]
11
11
  class PayICommonModelsBudgetManagementCreateLimitBase(BaseModel):
12
12
  max: float
13
13
 
14
- limit_tags: Optional[List[str]] = None
15
-
16
14
  limit_type: Optional[Literal["block", "allow"]] = None
17
15
 
16
+ properties: Optional[Dict[str, Optional[str]]] = None
17
+
18
18
  threshold: Optional[float] = None
@@ -0,0 +1,11 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import Dict, Optional
4
+
5
+ from ..._models import BaseModel
6
+
7
+ __all__ = ["PropertiesRequest"]
8
+
9
+
10
+ class PropertiesRequest(BaseModel):
11
+ properties: Dict[str, Optional[str]]
@@ -32,6 +32,8 @@ class XproxyResult(BaseModel):
32
32
 
33
33
  cost: Optional[Cost] = None
34
34
 
35
+ duplicate_request: Optional[bool] = None
36
+
35
37
  limits: Optional[Dict[str, Limits]] = None
36
38
 
37
39
  request_id: Optional[str] = None
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Optional
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Literal, Required, TypedDict
7
7
 
8
8
  __all__ = ["PayICommonModelsBudgetManagementCreateLimitBase"]
@@ -11,8 +11,8 @@ __all__ = ["PayICommonModelsBudgetManagementCreateLimitBase"]
11
11
  class PayICommonModelsBudgetManagementCreateLimitBase(TypedDict, total=False):
12
12
  max: Required[float]
13
13
 
14
- limit_tags: Optional[List[str]]
15
-
16
14
  limit_type: Literal["block", "allow"]
17
15
 
16
+ properties: Optional[Dict[str, Optional[str]]]
17
+
18
18
  threshold: Optional[float]
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Optional
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Literal, Required, TypedDict
7
7
 
8
8
  __all__ = ["LimitConfigCreateParams"]
@@ -11,8 +11,8 @@ __all__ = ["LimitConfigCreateParams"]
11
11
  class LimitConfigCreateParams(TypedDict, total=False):
12
12
  max: Required[float]
13
13
 
14
- limit_tags: Optional[List[str]]
15
-
16
14
  limit_type: Literal["block", "allow"]
17
15
 
16
+ properties: Optional[Dict[str, Optional[str]]]
17
+
18
18
  threshold: Optional[float]
@@ -2,11 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Required, TypedDict
7
7
 
8
8
  __all__ = ["PropertyUpdateParams"]
9
9
 
10
10
 
11
11
  class PropertyUpdateParams(TypedDict, total=False):
12
- properties: Required[Dict[str, str]]
12
+ properties: Required[Dict[str, Optional[str]]]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: payi
3
- Version: 0.1.0a110
3
+ Version: 0.1.0a137
4
4
  Summary: The official Python library for the payi API
5
5
  Project-URL: Homepage, https://github.com/Pay-i/pay-i-python
6
6
  Project-URL: Repository, https://github.com/Pay-i/pay-i-python
@@ -13,7 +13,6 @@ Classifier: Operating System :: Microsoft :: Windows
13
13
  Classifier: Operating System :: OS Independent
14
14
  Classifier: Operating System :: POSIX
15
15
  Classifier: Operating System :: POSIX :: Linux
16
- Classifier: Programming Language :: Python :: 3.8
17
16
  Classifier: Programming Language :: Python :: 3.9
18
17
  Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
@@ -21,7 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
21
20
  Classifier: Programming Language :: Python :: 3.13
22
21
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
22
  Classifier: Typing :: Typed
24
- Requires-Python: >=3.8
23
+ Requires-Python: >=3.9
25
24
  Requires-Dist: anyio<5,>=3.5.0
26
25
  Requires-Dist: distro<2,>=1.7.0
27
26
  Requires-Dist: httpx<1,>=0.23.0
@@ -29,11 +28,12 @@ Requires-Dist: nest-asyncio>=1.6.0
29
28
  Requires-Dist: pydantic<3,>=1.9.0
30
29
  Requires-Dist: sniffio
31
30
  Requires-Dist: tiktoken>=0.8.0
31
+ Requires-Dist: tokenizers>=0.21.4
32
32
  Requires-Dist: typing-extensions<5,>=4.10
33
33
  Requires-Dist: wrapt>=1.17.2
34
34
  Provides-Extra: aiohttp
35
35
  Requires-Dist: aiohttp; extra == 'aiohttp'
36
- Requires-Dist: httpx-aiohttp>=0.1.8; extra == 'aiohttp'
36
+ Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
37
37
  Description-Content-Type: text/markdown
38
38
 
39
39
  # Payi Python API library
@@ -41,7 +41,7 @@ Description-Content-Type: text/markdown
41
41
  <!-- prettier-ignore -->
42
42
  [![PyPI version](https://img.shields.io/pypi/v/payi.svg?label=pypi%20(stable))](https://pypi.org/project/payi/)
43
43
 
44
- The Payi Python library provides convenient access to the Payi REST API from any Python 3.8+
44
+ The Payi Python library provides convenient access to the Payi REST API from any Python 3.9+
45
45
  application. The library includes type definitions for all request params and response fields,
46
46
  and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
47
47
 
@@ -498,7 +498,7 @@ print(payi.__version__)
498
498
 
499
499
  ## Requirements
500
500
 
501
- Python 3.8 or higher.
501
+ Python 3.9 or higher.
502
502
 
503
503
  ## Contributing
504
504