fixes for python < 3.9

This commit is contained in:
Vithor Jaeger 2022-09-19 13:42:55 -04:00
parent afe03f72f0
commit 3bcfa1bd1c
17 changed files with 57 additions and 46 deletions

View File

@ -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 <a href="https://pocketbase.io/">PocketBase</a> 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 <a href="https://github.com/pocketbase/js-sdk">the javascript lib</a>.
---
Install PocketBase using pip:
```shell
$ pip install pocketbase
```
<p align="center"><i>The PocketBase Python SDK is <a href="https://github.com/vaphes/pocketbase/blob/master/LICENCE.txt">MIT licensed</a> code.</p>

View File

@ -1,3 +1,3 @@
__version__ = "0.1.1"
from .__version__ import __description__, __title__, __version__
from .client import Client, ClientResponseError

View File

@ -0,0 +1,3 @@
__title__ = "pocketbase"
__description__ = "PocketBase client SDK for python."
__version__ = "0.1.1"

View File

@ -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", "")

View File

@ -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)

View File

@ -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", "")

View File

@ -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", "")

View File

@ -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:

View File

@ -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", "")

View File

@ -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", ""))

View File

@ -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)

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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

View File

@ -1,25 +1,35 @@
[project]
name = "pocketbase"
version = "0.1.1"
description = "PocketBase client SDK for python."
authors = ["Vithor Jaeger <vaphes@gmail.com>"]
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 <vaphes@gmail.com>"]
[tool.poetry.dependencies]