From 3bcfa1bd1c4a2bb13413516647e2109020e039fa Mon Sep 17 00:00:00 2001 From: Vithor Jaeger Date: Mon, 19 Sep 2022 13:42:55 -0400 Subject: [PATCH] fixes for python < 3.9 --- README.md | 16 ++++++++++--- pocketbase/__init__.py | 2 +- pocketbase/__version__.py | 3 +++ pocketbase/models/admin.py | 4 ++-- pocketbase/models/collection.py | 4 ++-- pocketbase/models/external_auth.py | 3 +-- pocketbase/models/log_request.py | 6 ++--- pocketbase/models/record.py | 8 +++---- pocketbase/models/user.py | 4 ++-- pocketbase/models/utils/base_model.py | 6 ++--- pocketbase/models/utils/schema_field.py | 3 +-- pocketbase/services/admins.py | 3 +-- pocketbase/services/collections.py | 6 ++--- pocketbase/services/records.py | 3 +-- pocketbase/services/users.py | 2 +- .../services/utils/base_crud_service.py | 6 ++--- pyproject.toml | 24 +++++++++++++------ 17 files changed, 57 insertions(+), 46 deletions(-) create mode 100644 pocketbase/__version__.py diff --git a/README.md b/README.md index 6bd86fe..51cde77 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,17 @@ -# pocketbase +# PocketBase Python SDK [![Python 3.10](https://github.com/vaphes/pocketbase/actions/workflows/python-3.10.yml/badge.svg)](https://github.com/vaphes/pocketbase/actions/workflows/python-3.10.yml) [![Python 3.9](https://github.com/vaphes/pocketbase/actions/workflows/python-3.9.yml/badge.svg)](https://github.com/vaphes/pocketbase/actions/workflows/python-3.9.yml) [![Python 3.8](https://github.com/vaphes/pocketbase/actions/workflows/python-3.8.yml/badge.svg)](https://github.com/vaphes/pocketbase/actions/workflows/python-3.8.yml) [![Python 3.7](https://github.com/vaphes/pocketbase/actions/workflows/python-3.7.yml/badge.svg)](https://github.com/vaphes/pocketbase/actions/workflows/python-3.7.yml) -Python client SDK for PocketBase database. +Python client SDK for the PocketBase backend. -This is in early development, and at first is just a translations for the javascript lib. +This is in early development, and at first is just a translations for the javascript lib. + +--- + +Install PocketBase using pip: + +```shell +$ pip install pocketbase +``` + +

The PocketBase Python SDK is MIT licensed code.

\ No newline at end of file diff --git a/pocketbase/__init__.py b/pocketbase/__init__.py index 8efa48d..42b2a2d 100644 --- a/pocketbase/__init__.py +++ b/pocketbase/__init__.py @@ -1,3 +1,3 @@ -__version__ = "0.1.1" +from .__version__ import __description__, __title__, __version__ from .client import Client, ClientResponseError diff --git a/pocketbase/__version__.py b/pocketbase/__version__.py new file mode 100644 index 0000000..20b11b7 --- /dev/null +++ b/pocketbase/__version__.py @@ -0,0 +1,3 @@ +__title__ = "pocketbase" +__description__ = "PocketBase client SDK for python." +__version__ = "0.1.1" diff --git a/pocketbase/models/admin.py b/pocketbase/models/admin.py index cfd2e8c..448090f 100644 --- a/pocketbase/models/admin.py +++ b/pocketbase/models/admin.py @@ -1,4 +1,4 @@ -from typing import Any, Union +from typing import Union import datetime from pocketbase.utils import to_datetime @@ -10,7 +10,7 @@ class Admin(BaseModel): email: str last_reset_sent_at: Union[str, datetime.datetime] - def load(self, data: dict[str:Any]) -> None: + def load(self, data: dict) -> None: super().load(data) self.avatar = data.get("avatar", 0) self.email = data.get("email", "") diff --git a/pocketbase/models/collection.py b/pocketbase/models/collection.py index e504ca0..b5d4659 100644 --- a/pocketbase/models/collection.py +++ b/pocketbase/models/collection.py @@ -1,4 +1,4 @@ -from typing import Any, Optional +from typing import Optional from pocketbase.models.utils.base_model import BaseModel from pocketbase.models.utils.schema_field import SchemaField @@ -14,7 +14,7 @@ class Collection(BaseModel): update_rule: Optional[str] delete_rule: Optional[str] - def load(self, data: dict[str:Any]) -> None: + def load(self, data: dict) -> None: super().load(data) self.name = data.get("name", "") self.system = data.get("system", False) diff --git a/pocketbase/models/external_auth.py b/pocketbase/models/external_auth.py index fd04769..e29098c 100644 --- a/pocketbase/models/external_auth.py +++ b/pocketbase/models/external_auth.py @@ -1,4 +1,3 @@ -from typing import Any from pocketbase.models.utils.base_model import BaseModel @@ -7,7 +6,7 @@ class ExternalAuth(BaseModel): provider: str provider_id: str - def load(self, data: dict[str:Any]) -> None: + def load(self, data: dict) -> None: super().load(data) self.user_id = data.get("userId", "") self.provider = data.get("provider", "") diff --git a/pocketbase/models/log_request.py b/pocketbase/models/log_request.py index f18bd99..509ca6a 100644 --- a/pocketbase/models/log_request.py +++ b/pocketbase/models/log_request.py @@ -1,5 +1,3 @@ -from typing import Any - from pocketbase.models.utils.base_model import BaseModel @@ -12,9 +10,9 @@ class LogRequest(BaseModel): user_ip: str referer: str user_agent: str - meta: dict[str:Any] + meta: dict - def load(self, data: dict[str:Any]) -> None: + def load(self, data: dict) -> None: super().load(data) self.url = data.get("url", "") self.method = data.get("method", "") diff --git a/pocketbase/models/record.py b/pocketbase/models/record.py index 5341e1d..67824e9 100644 --- a/pocketbase/models/record.py +++ b/pocketbase/models/record.py @@ -1,5 +1,3 @@ -from typing import Any - from pocketbase.models.utils.base_model import BaseModel from pocketbase.utils import camel_to_snake @@ -7,9 +5,9 @@ from pocketbase.utils import camel_to_snake class Record(BaseModel): collection_id: str collection_name: str - expand: dict[str:Any] + expand: dict - def load(self, data: dict[str:Any]) -> None: + def load(self, data: dict) -> None: super().load(data) for key, value in data.items(): key = camel_to_snake(key).replace("@", "") @@ -22,7 +20,7 @@ class Record(BaseModel): self.load_expanded() @classmethod - def parse_expanded(cls, data: dict[str:Any]): + def parse_expanded(cls, data: dict): return cls(data) def load_expanded(self) -> None: diff --git a/pocketbase/models/user.py b/pocketbase/models/user.py index f49be71..381c242 100644 --- a/pocketbase/models/user.py +++ b/pocketbase/models/user.py @@ -1,4 +1,4 @@ -from typing import Any, Optional, Union +from typing import Optional, Union import datetime from pocketbase.utils import to_datetime @@ -13,7 +13,7 @@ class User(BaseModel): last_verification_sent_at: Union[str, datetime.datetime] profile: Optional[Record] - def load(self, data: dict[str:Any]) -> None: + def load(self, data: dict) -> None: super().load(data) self.email = data.get("email", "") self.verified = data.get("verified", "") diff --git a/pocketbase/models/utils/base_model.py b/pocketbase/models/utils/base_model.py index 0febc34..58a3cb1 100644 --- a/pocketbase/models/utils/base_model.py +++ b/pocketbase/models/utils/base_model.py @@ -1,5 +1,5 @@ from abc import ABC -from typing import Any, Union +from typing import Union import datetime from pocketbase.utils import to_datetime @@ -10,11 +10,11 @@ class BaseModel(ABC): created: Union[str, datetime.datetime] updated: Union[str, datetime.datetime] - def __init__(self, data: dict[str:Any] = {}) -> None: + def __init__(self, data: dict = {}) -> None: super().__init__() self.load(data) - def load(self, data: dict[str:Any]) -> None: + def load(self, data: dict) -> None: """Loads `data` into the current model.""" self.id = data.pop("id", "") self.created = to_datetime(data.pop("created", "")) diff --git a/pocketbase/models/utils/schema_field.py b/pocketbase/models/utils/schema_field.py index 7301d29..56c4574 100644 --- a/pocketbase/models/utils/schema_field.py +++ b/pocketbase/models/utils/schema_field.py @@ -1,5 +1,4 @@ from dataclasses import dataclass, field -from typing import Any @dataclass @@ -10,4 +9,4 @@ class SchemaField: system: bool = False required: bool = False unique: bool = False - options: dict[str:Any] = field(default_factory=dict) + options: dict = field(default_factory=dict) diff --git a/pocketbase/services/admins.py b/pocketbase/services/admins.py index 96d2d1a..42bc4ea 100644 --- a/pocketbase/services/admins.py +++ b/pocketbase/services/admins.py @@ -1,4 +1,3 @@ -from typing import Any from pocketbase.models.utils.base_model import BaseModel from pocketbase.services.utils.crud_service import CrudService from pocketbase.models.admin import Admin @@ -16,7 +15,7 @@ class AdminAuthResponse: class Admins(CrudService): - def decode(self, data: dict[str:Any]) -> BaseModel: + def decode(self, data: dict) -> BaseModel: return Admin(data) def base_crud_path(self) -> str: diff --git a/pocketbase/services/collections.py b/pocketbase/services/collections.py index b4d55b4..2bb7a08 100644 --- a/pocketbase/services/collections.py +++ b/pocketbase/services/collections.py @@ -1,12 +1,10 @@ -from typing import Any - from pocketbase.services.utils.crud_service import CrudService from pocketbase.models.utils.base_model import BaseModel from pocketbase.models.collection import Collection class Collections(CrudService): - def decode(self, data: dict[str:Any]) -> BaseModel: + def decode(self, data: dict) -> BaseModel: return Collection(data) def base_crud_path(self) -> str: @@ -14,7 +12,7 @@ class Collections(CrudService): def import_collections( self, - collections: list[Collection], + collections: list, delete_missing: bool = False, query_params: dict = {}, ) -> bool: diff --git a/pocketbase/services/records.py b/pocketbase/services/records.py index bb476db..202ccae 100644 --- a/pocketbase/services/records.py +++ b/pocketbase/services/records.py @@ -1,4 +1,3 @@ -from typing import Any from urllib.parse import quote, urlencode from pocketbase.services.utils.sub_crud_service import SubCrudService @@ -7,7 +6,7 @@ from pocketbase.models.record import Record class Records(SubCrudService): - def decode(self, data: dict[str:Any]) -> BaseModel: + def decode(self, data: dict) -> BaseModel: return Record(data) def base_crud_path(self, collection_id_or_name: str) -> str: diff --git a/pocketbase/services/users.py b/pocketbase/services/users.py index c574cc4..460daee 100644 --- a/pocketbase/services/users.py +++ b/pocketbase/services/users.py @@ -35,7 +35,7 @@ class AuthMethodsList: class Users(CrudService): - def decode(self, data: dict[str:Any]) -> BaseModel: + def decode(self, data: dict) -> BaseModel: return User(data) def base_crud_path(self) -> str: diff --git a/pocketbase/services/utils/base_crud_service.py b/pocketbase/services/utils/base_crud_service.py index 4444853..c0bd250 100644 --- a/pocketbase/services/utils/base_crud_service.py +++ b/pocketbase/services/utils/base_crud_service.py @@ -1,7 +1,5 @@ from abc import ABC from urllib.parse import quote -from typing import Any - from pocketbase.models.utils.base_model import BaseModel from pocketbase.models.utils.list_result import ListResult @@ -9,7 +7,7 @@ from pocketbase.services.utils.base_service import BaseService class BaseCrudService(BaseService, ABC): - def decode(self, data: dict[str:Any]) -> BaseModel: + def decode(self, data: dict) -> BaseModel: """Response data decoder""" def _get_full_list( @@ -18,7 +16,7 @@ class BaseCrudService(BaseService, ABC): result: list[BaseModel] = [] - def request(result: list[BaseModel], page: int) -> list[Any]: + def request(result: list[BaseModel], page: int) -> list: list = self._get_list(base_path, page, batch_size, query_params) items = list.items total_items = list.total_items diff --git a/pyproject.toml b/pyproject.toml index 3f2ab26..187cfd0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,25 +1,35 @@ [project] name = "pocketbase" -version = "0.1.1" -description = "PocketBase client SDK for python." -authors = ["Vithor Jaeger "] -readme = "README.md" +description = "PocketBase SDK for python." requires-python = ">=3.7" +license = "MIT" +authors = [ + { name = "Vithor Jaeger", email = "vaphes@gmail.com" }, +] classifiers = [ "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", + "Intended Audience :: Developers", ] -keywords = "pocketbase client sdk" +keywords = "pocketbase sdk" +dependencies = ["httpx>=0.23.0"] +dynamic = ["readme", "version"] [project.urls] "Homepage" = "https://github.com/vaphes/pocketbase" +"Source" = "https://github.com/vaphes/pocketbase" "Bug Tracker" = "https://github.com/vaphes/pocketbase/issues" [tool.poetry] name = "pocketbase" -version = "0.1.0" -description = "PocketBase client SDK for python." +version = "0.1.1" +description = "PocketBase SDK for python." authors = ["Vithor Jaeger "] [tool.poetry.dependencies]