diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index e6397ca..2f30f01 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -16,12 +16,10 @@ jobs: uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - - name: Install pipenv - run: pip install pipenv - name: Install dependencies - run: pipenv install --dev && pip install pytest + run: pip install -r requirements.txt # You can test your matrix by printing the current Python version - name: Run the tests with pytest - run: pipenv run make ci + run: make ci env: NEON_API_KEY: ${{ secrets.NEON_API_KEY }} diff --git a/Makefile b/Makefile index f5c783b..c3ce9f3 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ gen-model: fetch-v2-schema --input v2.json \ --collapse-root-models \ --output neon_client/schema.py \ + --additional-imports datetime.datetime,pydantic.dataclasses.dataclass \ --use-standard-collections \ --output-model-type dataclasses.dataclass \ # --input-file-type openapi \ diff --git a/neon_client/schema.py b/neon_client/schema.py index bce594c..126a744 100644 --- a/neon_client/schema.py +++ b/neon_client/schema.py @@ -1,13 +1,16 @@ # generated by datamodel-codegen: # filename: v2.json -# timestamp: 2024-01-22T21:10:29+00:00 +# timestamp: 2024-01-30T15:09:41+00:00 from __future__ import annotations -from pydantic.dataclasses import dataclass +# from dataclasses import dataclass +from datetime import datetime from enum import Enum from typing import Optional +from pydantic.dataclasses import dataclass + class Provisioner(Enum): k8s_pod = "k8s-pod" @@ -34,7 +37,7 @@ class ApiKeyCreateResponse: id: int key: str name: str - created_at: str + created_at: datetime @dataclass @@ -43,16 +46,16 @@ class ApiKeyRevokeResponse: name: str revoked: bool last_used_from_addr: str - last_used_at: Optional[str] = None + last_used_at: Optional[datetime] = None @dataclass class ApiKeysListResponseItem: id: int name: str - created_at: str + created_at: datetime last_used_from_addr: str - last_used_at: Optional[str] = None + last_used_at: Optional[datetime] = None class OperationAction(Enum): @@ -91,8 +94,8 @@ class Branch: class ProjectPermission: id: str granted_to_email: str - granted_at: str - revoked_at: Optional[str] = None + granted_at: datetime + revoked_at: Optional[datetime] = None @dataclass @@ -115,16 +118,16 @@ class ProjectConsumption: written_data_bytes: int compute_time_seconds: int active_time_seconds: int - updated_at: str - period_start: str - period_end: str + updated_at: datetime + period_start: datetime + period_end: datetime previous_period_id: str - data_storage_bytes_hour_updated_at: Optional[str] = None - synthetic_storage_size_updated_at: Optional[str] = None - data_transfer_bytes_updated_at: Optional[str] = None - written_data_bytes_updated_at: Optional[str] = None - compute_time_seconds_updated_at: Optional[str] = None - active_time_seconds_updated_at: Optional[str] = None + data_storage_bytes_hour_updated_at: Optional[datetime] = None + synthetic_storage_size_updated_at: Optional[datetime] = None + data_transfer_bytes_updated_at: Optional[datetime] = None + written_data_bytes_updated_at: Optional[datetime] = None + compute_time_seconds_updated_at: Optional[datetime] = None + active_time_seconds_updated_at: Optional[datetime] = None @dataclass @@ -237,8 +240,8 @@ class ExplainData: class Role: branch_id: str name: str - created_at: str - updated_at: str + created_at: datetime + updated_at: datetime password: Optional[str] = None protected: Optional[bool] = None @@ -309,6 +312,9 @@ class BillingSubscriptionType(Enum): pro = "pro" direct_sales = "direct_sales" aws_marketplace = "aws_marketplace" + free_v2 = "free_v2" + launch = "launch" + scale = "scale" @dataclass @@ -317,8 +323,8 @@ class Database: branch_id: str name: str owner_name: str - created_at: str - updated_at: str + created_at: datetime + updated_at: datetime @dataclass @@ -392,11 +398,6 @@ class ProjectOwnerData: subscription_type: BillingSubscriptionType -class SubscriptionDowngradeNewType(Enum): - free = "free" - free_v2 = "free_v2" - - class SupportTicketSeverity(Enum): low = "low" normal = "normal" @@ -404,11 +405,6 @@ class SupportTicketSeverity(Enum): critical = "critical" -class SubscriptionUpgradeNewType(Enum): - launch = "launch" - scale = "scale" - - @dataclass class PaginationResponse: pagination: Optional[Pagination] = None @@ -421,13 +417,13 @@ class Operation: action: OperationAction status: OperationStatus failures_count: int - created_at: str - updated_at: str + created_at: datetime + updated_at: datetime total_duration_ms: int branch_id: Optional[str] = None endpoint_id: Optional[str] = None error: Optional[str] = None - retry_at: Optional[str] = None + retry_at: Optional[datetime] = None @dataclass @@ -466,14 +462,14 @@ class Branch1: active_time_seconds: int written_data_bytes: int data_transfer_bytes: int - created_at: str - updated_at: str + created_at: datetime + updated_at: datetime parent_id: Optional[str] = None parent_lsn: Optional[str] = None parent_timestamp: Optional[str] = None pending_state: Optional[BranchState] = None logical_size: Optional[int] = None - last_reset_at: Optional[str] = None + last_reset_at: Optional[datetime] = None @dataclass @@ -513,7 +509,7 @@ class StatementResult: class BillingAccount: payment_source: PaymentSource subscription_type: BillingSubscriptionType - quota_reset_at_last: str + quota_reset_at_last: datetime email: str address_city: str address_country: str @@ -598,15 +594,15 @@ class ProjectListItem: active_time: int cpu_used_sec: int creation_source: str - created_at: str - updated_at: str + created_at: datetime + updated_at: datetime owner_id: str default_endpoint_settings: Optional[DefaultEndpointSettings] = None settings: Optional[ProjectSettingsData] = None - maintenance_starts_at: Optional[str] = None + maintenance_starts_at: Optional[datetime] = None synthetic_storage_size: Optional[int] = None - quota_reset_at: Optional[str] = None - compute_last_active_at: Optional[str] = None + quota_reset_at: Optional[datetime] = None + compute_last_active_at: Optional[datetime] = None @dataclass @@ -629,18 +625,18 @@ class Project: store_passwords: bool creation_source: str history_retention_seconds: int - created_at: str - updated_at: str - consumption_period_start: str - consumption_period_end: str + created_at: datetime + updated_at: datetime + consumption_period_start: datetime + consumption_period_end: datetime owner_id: str default_endpoint_settings: Optional[DefaultEndpointSettings] = None settings: Optional[ProjectSettingsData] = None - maintenance_starts_at: Optional[str] = None + maintenance_starts_at: Optional[datetime] = None synthetic_storage_size: Optional[int] = None - quota_reset_at: Optional[str] = None + quota_reset_at: Optional[datetime] = None owner: Optional[ProjectOwnerData] = None - compute_last_active_at: Optional[str] = None + compute_last_active_at: Optional[datetime] = None @dataclass @@ -703,8 +699,8 @@ class Endpoint: disabled: bool passwordless_access: bool creation_source: str - created_at: str - updated_at: str + created_at: datetime + updated_at: datetime proxy_host: str suspend_timeout_seconds: int provisioner: Provisioner diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..01bbb81 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,8 @@ +-e . +datamodel-code-generator +pytest +pytest-cov +pytest-ordering +pytest-recording +ruff +sphinx diff --git a/v2.json b/v2.json index 7fb5b3d..bf6d420 100644 --- a/v2.json +++ b/v2.json @@ -898,8 +898,7 @@ "summary": "Return project's permissions", "description": "Return project's permissions", "tags": [ - "Project", - "Permissions" + "Project" ], "operationId": "listProjectPermissions", "responses": { @@ -922,8 +921,7 @@ "summary": "Grant project permission to the user", "description": "Grant project permission to the user", "tags": [ - "Project", - "Permissions" + "Project" ], "operationId": "grantPermissionToProject", "requestBody": { @@ -976,8 +974,7 @@ "summary": "Revoke permission from the user", "description": "Revoke permission from the user", "tags": [ - "Project", - "Permissions" + "Project" ], "operationId": "revokePermissionFromProject", "responses": { @@ -5028,7 +5025,10 @@ "free", "pro", "direct_sales", - "aws_marketplace" + "aws_marketplace", + "free_v2", + "launch", + "scale" ] }, "Database": { @@ -5401,13 +5401,6 @@ } } }, - "SubscriptionDowngradeNewType": { - "type": "string", - "enum": [ - "free", - "free_v2" - ] - }, "GeneralError": { "type": "object", "description": "General Error", @@ -5476,13 +5469,6 @@ "high", "critical" ] - }, - "SubscriptionUpgradeNewType": { - "type": "string", - "enum": [ - "launch", - "scale" - ] } } }