python-general-be-lib 0.8.2__tar.gz → 0.8.4__tar.gz
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.
- {python_general_be_lib-0.8.2/python_general_be_lib.egg-info → python_general_be_lib-0.8.4}/PKG-INFO +1 -1
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/crud_repository.py +4 -10
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/pyproject.toml +1 -1
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4/python_general_be_lib.egg-info}/PKG-INFO +1 -1
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/setup.py +1 -1
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/LICENSE +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/README.md +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/__init__.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/exception/__init__.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/exception/access_exceptions.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/exception/crud_exceptions.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/exception/exception_interface.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/base/__init__.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/base/base_model.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/base/declarative_base.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/metadata/__init__.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/metadata/crud_metadata.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/metadata/geom_metadata.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/__init__.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/geometry_repository.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/handler/__init__.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/handler/base_handler.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/handler/ilike_handler.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/handler/interval_handler.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/handler/json_handler.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/handler/json_ilike_handler.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/handler/or_handler.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/handler/statement_manager.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/many_to_many_repository.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/view_repository.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/logger.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/paginator_dto.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/python_general_be_lib.egg-info/SOURCES.txt +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/python_general_be_lib.egg-info/dependency_links.txt +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/python_general_be_lib.egg-info/requires.txt +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/python_general_be_lib.egg-info/top_level.txt +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/setup.cfg +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_caricamento_parziale.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_compiled_cache.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_logger.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_pipeline_handler.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_query_count.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_smoke_crud.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_sql_snapshot.py +0 -0
- {python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_view_repository.py +0 -0
{python_general_be_lib-0.8.2/python_general_be_lib.egg-info → python_general_be_lib-0.8.4}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-general-be-lib
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: General purpose backend library — SQLAlchemy CRUD/Geometry repositories, FastAPI exceptions, Pydantic base models, logger utilities.
|
|
5
5
|
Author-email: Andrea Di Placido <a.diplacido@arpes.it>, "Arpes S.r.l." <it.admin@arpes.it>
|
|
6
6
|
License: MIT
|
|
@@ -6,7 +6,7 @@ import math
|
|
|
6
6
|
from functools import lru_cache
|
|
7
7
|
from typing import Any, Type, Sequence, Iterable, Optional, Mapping
|
|
8
8
|
|
|
9
|
-
from pydantic import BaseModel, TypeAdapter
|
|
9
|
+
from pydantic import BaseModel, TypeAdapter, ConfigDict
|
|
10
10
|
from sqlalchemy import select, delete, update, insert, tuple_, Row, RowMapping, ColumnElement, Select, Insert, Update, Delete, func, ARRAY
|
|
11
11
|
from sqlalchemy.engine.base import Engine
|
|
12
12
|
from sqlalchemy.exc import DataError, IntegrityError, NoResultFound, OperationalError
|
|
@@ -32,6 +32,7 @@ def _list_adapter(model: Type[BaseModel]) -> TypeAdapter:
|
|
|
32
32
|
"""
|
|
33
33
|
return TypeAdapter(list[model])
|
|
34
34
|
|
|
35
|
+
|
|
35
36
|
@lru_cache(maxsize=None)
|
|
36
37
|
def _reduced_model(entity: Type[Base], columns: frozenset[str]) -> Type[BaseModel]:
|
|
37
38
|
"""Modello ridotto alle colonne indicate, costruito una volta per combinazione.
|
|
@@ -45,11 +46,7 @@ def _reduced_model(entity: Type[Base], columns: frozenset[str]) -> Type[BaseMode
|
|
|
45
46
|
# configurazione dei mapper (a differenza di ``column_attrs``/``attrs``).
|
|
46
47
|
ordinate = [name for name in inspect(entity).columns.keys() if name in columns]
|
|
47
48
|
digest = hashlib.sha1("|".join(ordinate).encode()).hexdigest()[:8]
|
|
48
|
-
return entity.to_pydantic(
|
|
49
|
-
model_name=f"{entity.__name__}_{digest}",
|
|
50
|
-
full_optional=True,
|
|
51
|
-
include_only=ordinate,
|
|
52
|
-
)
|
|
49
|
+
return entity.to_pydantic(model_name=f"{entity.__name__}_{digest}", full_optional=True, include_only=ordinate, __config__=ConfigDict(arbitrary_types_allowed=True))
|
|
53
50
|
|
|
54
51
|
|
|
55
52
|
class CrudRepository[Entity: Base | Type[Base]]:
|
|
@@ -129,9 +126,6 @@ class CrudRepository[Entity: Base | Type[Base]]:
|
|
|
129
126
|
|
|
130
127
|
# -------------------------
|
|
131
128
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
129
|
def _retrieve_parsing_model(self, columns=None, exclude_columns=None):
|
|
136
130
|
selected_columns = set(columns) if columns else set(inspect(self.entity).columns.keys())
|
|
137
131
|
if exclude_columns:
|
|
@@ -713,7 +707,7 @@ class CrudRepository[Entity: Base | Type[Base]]:
|
|
|
713
707
|
entities = self.execute(session, stmt)
|
|
714
708
|
|
|
715
709
|
len_entities = len(entities)
|
|
716
|
-
if limit == 0 or (len_entities < limit and page == 1):
|
|
710
|
+
if limit == 0 or limit is None or (len_entities < limit and page == 1):
|
|
717
711
|
count_ = len_entities
|
|
718
712
|
elif limit > len_entities > 0 and page > 1:
|
|
719
713
|
count_ = (page - 1) * limit + len_entities
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.backends.legacy:build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-general-be-lib"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.4"
|
|
8
8
|
description = "General purpose backend library — SQLAlchemy CRUD/Geometry repositories, FastAPI exceptions, Pydantic base models, logger utilities."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4/python_general_be_lib.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-general-be-lib
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: General purpose backend library — SQLAlchemy CRUD/Geometry repositories, FastAPI exceptions, Pydantic base models, logger utilities.
|
|
5
5
|
Author-email: Andrea Di Placido <a.diplacido@arpes.it>, "Arpes S.r.l." <it.admin@arpes.it>
|
|
6
6
|
License: MIT
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/exception/access_exceptions.py
RENAMED
|
File without changes
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/exception/crud_exceptions.py
RENAMED
|
File without changes
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/exception/exception_interface.py
RENAMED
|
File without changes
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/base/__init__.py
RENAMED
|
File without changes
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/base/base_model.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/metadata/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/general/interface/repository/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_general_be_lib-0.8.2 → python_general_be_lib-0.8.4}/tests/test_caricamento_parziale.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|