2 Commits

Author SHA1 Message Date
cclecle
de71a19956 fix import order in unittest 2023-11-11 10:03:01 +00:00
cclecle
3b358ab49c remove unused resource_handler_walker
uniform all if TYPE_CHECKING
ignore TYPE_CHECKING in coverage
2023-11-11 09:01:38 +00:00
19 changed files with 30 additions and 137 deletions

View File

@@ -3,5 +3,4 @@ encoding//src/pyrestresource/__init__.py=utf-8
encoding//src/pyrestresource/__metadata__.py=utf-8
encoding//src/pyrestresource/rest_login.py=utf-8
encoding//src/pyrestresource/rest_resource.py=utf-8
encoding//src/pyrestresource/rest_resource_handler_walker.py=utf-8
encoding/<project>=UTF-8

View File

@@ -64,6 +64,11 @@ concurrency = [
'thread'
]
[tool.coverage.report]
exclude_also = [
"if TYPE_CHECKING:",
]
[project.urls]
Homepage = "https://chacha.ddns.net/gitea/chacha/pyrestresource"
Documentation = "https://chacha.ddns.net/mkdocs-web/chacha/pyrestresource/master/latest/"

View File

@@ -6,7 +6,7 @@ from enum import Enum, auto
from .rest_types import rsrc_verb
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from .rest_login import UserLogin

View File

@@ -30,7 +30,7 @@ from .rest_exceptions import (
RestResourceLoginException_InvalidSession,
)
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from .rest_request import RestRequest
from .rest_request_opt import RestRequestParams_RestResourceBase_PUT, RestRequestParams_RestResourceBase_GET

View File

@@ -1,17 +1,11 @@
from __future__ import annotations
from typing import (
Any,
Literal,
Callable,
Optional,
TYPE_CHECKING,
)
from typing import Literal, Type, Any, Callable, TYPE_CHECKING
from pydantic.fields import Field, _Unset, PydanticUndefined
from .rest_exceptions import RestResourceModelException
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from .rest_ACL import ACL_record
from .rest_resource_plugin import ResourcePlugin
from typing import Unpack
@@ -24,11 +18,11 @@ def RestField(
default_factory: Callable[[], Any] | None = _Unset,
alias: str | None = _Unset,
alias_priority: int | None = _Unset,
validation_alias: str | AliasPath | AliasChoices | None = _Unset,
validation_alias: str | "AliasPath" | "AliasChoices" | None = _Unset,
serialization_alias: str | None = _Unset,
title: str | None = _Unset,
description: str | None = _Unset,
examples: list[Any] | None = _Unset,
examples: "list[Any] | None" = _Unset,
exclude: bool | None = _Unset,
discriminator: str | None = _Unset,
json_schema_extra: dict[str, Any] | Callable[[dict[str, Any]], None] | None = _Unset,
@@ -50,8 +44,8 @@ def RestField(
min_length: int | None = _Unset,
max_length: int | None = _Unset,
union_mode: Literal["smart", "left_to_right"] = _Unset,
ACL: Optional[list[ACL_record]] = _Unset,
plugin: Optional[type[ResourcePlugin]] = _Unset,
ACL: list["ACL_record"] | None = _Unset,
plugin: Type["ResourcePlugin"] | None = _Unset,
**extra: Unpack[_EmptyKwargs],
) -> Any:
if not json_schema_extra or json_schema_extra is _Unset:

View File

@@ -35,7 +35,7 @@ from .rest_exceptions import (
RestResourceConfigException,
)
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from typing import Optional
from .rest_types import T_SupportedRESTFields
from .rest_resource import RestResourceBase

View File

@@ -9,7 +9,7 @@ from .rest_types import (
_T_DictKey,
)
if TYPE_CHECKING is True:
if TYPE_CHECKING:
pass

View File

@@ -35,7 +35,7 @@ from .rest_exceptions import (
RestResourceException,
)
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from .rest_request import RestRequest
from .rest_types import T_SupportedRESTFields
from .rest_resource_plugin import ResourcePlugin

View File

@@ -43,7 +43,7 @@ from .rest_exceptions import (
RestResourceHandlerException_Forbiden,
)
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from .rest_types import T_T_DictKey, T_T_DictValues
from .rest_request import RestRequest

View File

@@ -1,83 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# pyrestresource(c) by chacha
#
# pyrestresource is licensed under a
# Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Unported License.
#
# You should have received a copy of the license along with this
# work. If not, see <https://creativecommons.org/licenses/by-nc-sa/4.0/>.
# pylint: disable=missing-module-docstring,missing-class-docstring,missing-function-docstring
"""CLI interface module"""
from __future__ import annotations
from typing import TYPE_CHECKING
from .rest_resource_walker import (
RestResourceWalkerFutureResult,
RestResourceWalker_Root,
RestResourceWalker_Sub_T_Dict,
RestResourceWalker_Sub_RestFields,
RestResourceWalker_Sub_RestResourceBase,
)
if TYPE_CHECKING is True:
from typing import Optional, Any
class RestResourceWalkerFutureResult_RestResourceBase_handler(RestResourceWalkerFutureResult[dict]):
def process_future(self, result: Optional[list[dict]]) -> Optional[dict]:
# print(f"RestResourceWalkerFutureResult_RestResourceBase_handler {result}")
res: dict[str, Any] = {}
res[self.source.resource_name] = {}
if result:
for subres in result:
key = next(iter(subres))
print(key)
res[self.source.resource_name] = res[self.source.resource_name] | subres
return res
class RestResourceWalkerFutureResult_Dict_handler(RestResourceWalkerFutureResult[dict]):
def process_future(self, result: Optional[list[dict]]) -> Optional[dict]:
# print(f"RestResourceWalkerFutureResult_Dict_handler {result}")
res: dict[str, Any] = {}
if result:
for subres in result:
res = res | subres
return res
class RestResourceWalkerFutureResult_RestFields_handler(RestResourceWalkerFutureResult[dict]):
def process_future(self, result: Optional[list[dict]]) -> Optional[dict]:
# print(f"RestResourceWalkerFutureResult_RestFields_handler {result}")
# print(self.source.resource)
res: dict[str, Any] = {}
res[self.source.resource_name] = {}
if result:
for subres in result:
key = next(iter(subres))
print(key)
res[self.source.resource_name] = res[self.source.resource_name] | subres
return res
class RestResourceWalker_Sub_T_Dict__handler(RestResourceWalker_Sub_T_Dict):
cls_RestResourceWalkerFutureResult = RestResourceWalkerFutureResult_Dict_handler
class RestResourceWalker_Sub_RestResourceBase__handler(RestResourceWalker_Sub_RestResourceBase):
cls_RestResourceWalkerFutureResult = RestResourceWalkerFutureResult_RestResourceBase_handler
class RestResourceWalker_Sub_RestResourceFields__handler(RestResourceWalker_Sub_RestFields):
cls_RestResourceWalkerFutureResult = RestResourceWalkerFutureResult_RestFields_handler
class RestResourceWalker_Root__handler(RestResourceWalker_Root):
cls_RestResourceWalker_Sub = [
RestResourceWalker_Sub_T_Dict__handler,
RestResourceWalker_Sub_RestResourceFields__handler,
RestResourceWalker_Sub_RestResourceBase__handler,
]

View File

@@ -13,7 +13,7 @@ from .rest_types import (
from .rest_exceptions import RestResourceConfigException
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from .rest_request import RestRequest
from .rest_resource import RestResourceBase
from .rest_request_opt import (

View File

@@ -29,8 +29,8 @@ from .rest_ACL import (
)
from .rest_exceptions import RestResourcePluginException_InvalidPluginSignature, RestResourceModelException, RestResourceModelException_ACL
if TYPE_CHECKING is True:
pass
if TYPE_CHECKING:
...
class RestResourceWalker_Sub_T_Dict__tree_init(RestResourceWalker_Sub_T_Dict):

View File

@@ -17,7 +17,7 @@ from .rest_types import _T_SupportedRESTFields
from .rest_resource import RestResourceBase
from .rest_exceptions import RestResourceModelException
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from typing import Any, Optional
TV_RestResourceWalkerFutureResult = TypeVar("TV_RestResourceWalkerFutureResult")

View File

@@ -8,7 +8,7 @@ from pathlib import Path
from uuid import UUID
from ipaddress import IPv4Address, IPv4Network
if TYPE_CHECKING is True:
if TYPE_CHECKING:
from .rest_resource import RestResourceBase
T_Gen_DictKeys: type = type({}.keys())

View File

@@ -4,12 +4,12 @@ from os import chdir
from pathlib import Path
from typing import Optional, ClassVar
from time import sleep
import uvicorn
import socket
import requests
from contextlib import closing
from multiprocessing import Process
import requests
from requests.adapters import HTTPAdapter
import uvicorn
from src.pyrestresource import (
RestField,

View File

@@ -8,10 +8,6 @@ from uuid import UUID, uuid4
from time import time
import json
print(__name__)
print(__package__)
from src.pyrestresource import (
RestField,
RestResourceHandlerException_Forbiden,
@@ -484,7 +480,7 @@ class Test_RestAPI_PERFO(unittest.TestCase):
init_classes()
self.testapp = RootApp()
@unittest.skip
# @unittest.skip
def test_perf_dict(self):
print(f"LIB INTERNAL PERF TEST")
n_loop = 10000

View File

@@ -1,16 +1,11 @@
from __future__ import annotations
import unittest
from typing import Optional
from os import chdir
from pathlib import Path
from io import StringIO
from contextlib import redirect_stdout
print(__name__)
print(__package__)
from src.pyrestresource import (
RestField,
RestResourceBase,

View File

@@ -1,15 +1,9 @@
from __future__ import annotations
import unittest
from typing import Optional
from os import chdir
from pathlib import Path
print(__name__)
print(__package__)
from src.pyrestresource import (
RestField,
RestResourceBase,

View File

@@ -1,22 +1,16 @@
from __future__ import annotations
import unittest
from unittest.mock import patch
from os import chdir
from pathlib import Path
from typing import Optional
from uuid import UUID, uuid4
from time import time, sleep
import json
import uvicorn
import socket
import requests
from contextlib import closing
from multiprocessing import Process
from requests.adapters import HTTPAdapter
import coverage
print(__name__)
print(__package__)
import requests
from requests.adapters import HTTPAdapter
import uvicorn
from src.pyrestresource import (
RestField,
@@ -28,7 +22,6 @@ from src.pyrestresource import (
RestRequestParams_Dict_GET,
T_SupportedRESTFields,
)
from pprint import pprint
from test import ThreadedUvicorn
@@ -269,7 +262,7 @@ class Test_RestAPI_WebServer(unittest.TestCase):
s.close()
server.stop()
@unittest.skip
# @unittest.skip
def test_perf_dict(self):
print(f"SOCKET PERF TEST")
n_loop = 10000