tigrbl 0.3.1__py3-none-any.whl → 0.3.2.dev1__py3-none-any.whl

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.
@@ -5,7 +5,6 @@ from .common import AttrDict, _default_prefix, _mount_router # noqa: F401
5
5
  from .include import include_model, include_models, _seed_security_and_deps # noqa: F401
6
6
  from .rpc import rpc_call
7
7
 
8
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
9
8
  logger = logging.getLogger("uvicorn")
10
9
  logger.debug("Loaded module v3/bindings/api/__init__")
11
10
 
@@ -4,7 +4,6 @@ import logging
4
4
  from types import SimpleNamespace
5
5
  from typing import Any
6
6
 
7
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
8
7
  logger = logging.getLogger("uvicorn")
9
8
  logger.debug("Loaded module v3/bindings/api/common")
10
9
 
@@ -24,11 +24,23 @@ from ...config.constants import (
24
24
  )
25
25
  from ...engine import resolver as _resolver
26
26
 
27
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
28
27
  logger = logging.getLogger("uvicorn")
29
28
  logger.debug("Loaded module v3/bindings/api/include")
30
29
 
31
30
 
31
+ def _coerce_model_columns(columns: Any) -> Tuple[str, ...]:
32
+ if isinstance(columns, SimpleNamespace):
33
+ return tuple(columns.__dict__.keys())
34
+ if isinstance(columns, dict):
35
+ return tuple(columns.keys())
36
+ if isinstance(columns, str):
37
+ return (columns,)
38
+ try:
39
+ return tuple(columns)
40
+ except TypeError:
41
+ return ()
42
+
43
+
32
44
  # --- keep as helper, no behavior change to transports/kernel ---
33
45
  def _seed_security_and_deps(api: Any, model: type) -> None:
34
46
  """
@@ -132,7 +144,7 @@ def _attach_to_api(api: ApiLike, model: type) -> None:
132
144
  )
133
145
 
134
146
  # Table metadata (introspection only)
135
- api.columns[mname] = tuple(getattr(model, "columns", ()))
147
+ api.columns[mname] = _coerce_model_columns(getattr(model, "columns", ()))
136
148
  api.table_config[mname] = dict(getattr(model, "table_config", {}) or {})
137
149
 
138
150
  # Core helper proxies (now aware of API for DB resolution precedence)
@@ -8,7 +8,6 @@ from ..rpc import _coerce_payload, _get_phase_chains, _validate_input, _serializ
8
8
  from ...runtime import executor as _executor
9
9
  from ...engine import resolver as _resolver
10
10
 
11
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
12
11
  logger = logging.getLogger("uvicorn")
13
12
  logger.debug("Loaded module v3/bindings/api/resource_proxy")
14
13
 
@@ -8,7 +8,6 @@ from .common import ApiLike, _ensure_api_ns
8
8
  from ...engine import resolver as _resolver
9
9
  from ...core.crud.helpers.model import _single_pk_name
10
10
 
11
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
12
11
  logger = logging.getLogger("uvicorn")
13
12
  logger.debug("Loaded module v3/bindings/api/rpc")
14
13
 
@@ -4,7 +4,6 @@ import logging
4
4
 
5
5
  from .builder import build_and_attach
6
6
 
7
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
8
7
  logger = logging.getLogger("uvicorn")
9
8
  logger.debug("Loaded module v3/bindings/handlers/__init__")
10
9
 
@@ -9,7 +9,6 @@ from ...op.types import StepFn
9
9
  from .namespaces import _ensure_alias_handlers_ns, _ensure_alias_hooks_ns
10
10
  from .steps import _wrap_core, _wrap_custom
11
11
 
12
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
13
12
  logger = logging.getLogger("uvicorn")
14
13
  logger.debug("Loaded module v3/bindings/handlers/builder")
15
14
 
@@ -4,7 +4,6 @@ import logging
4
4
 
5
5
  from typing import Any, Mapping, Sequence
6
6
 
7
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
8
7
  logger = logging.getLogger("uvicorn")
9
8
  logger.debug("Loaded module v3/bindings/handlers/ctx")
10
9
 
@@ -7,7 +7,6 @@ from typing import Any, Mapping, Optional
7
7
 
8
8
  from .ctx import _ctx_payload, _ctx_path_params
9
9
 
10
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
11
10
  logger = logging.getLogger("uvicorn")
12
11
  logger.debug("Loaded module v3/bindings/handlers/identifiers")
13
12
 
@@ -4,7 +4,6 @@ import logging
4
4
 
5
5
  from types import SimpleNamespace
6
6
 
7
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
8
7
  logger = logging.getLogger("uvicorn")
9
8
  logger.debug("Loaded module v3/bindings/handlers/namespaces")
10
9
 
@@ -13,7 +13,6 @@ from ...runtime.executor import _Ctx
13
13
  from .ctx import _ctx_db, _ctx_payload, _ctx_request
14
14
  from .identifiers import _resolve_ident
15
15
 
16
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
17
16
  logger = logging.getLogger("uvicorn")
18
17
  logger.debug("Loaded module v3/bindings/handlers/steps")
19
18
 
@@ -4,7 +4,6 @@ import logging
4
4
 
5
5
  from .builder import build_and_attach
6
6
 
7
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
8
7
  logger = logging.getLogger("uvicorn")
9
8
  logger.debug("Loaded module v3/bindings/schemas/__init__")
10
9
 
@@ -13,7 +13,6 @@ from ...schema import collect_decorated_schemas
13
13
  from .defaults import _default_schemas_for_spec
14
14
  from .utils import _alias_schema, _ensure_alias_namespace, _resolve_schema_arg, _Key
15
15
 
16
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
17
16
  logger = logging.getLogger("uvicorn")
18
17
  logger.debug("Loaded module v3/bindings/schemas/builder")
19
18
 
@@ -19,7 +19,6 @@ from ...schema import (
19
19
  )
20
20
  from .utils import _pk_info
21
21
 
22
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
23
22
  logger = logging.getLogger("uvicorn")
24
23
  logger.debug("Loaded module v3/bindings/schemas/defaults")
25
24
 
@@ -11,7 +11,6 @@ from pydantic import BaseModel, create_model
11
11
  from ...schema.types import SchemaArg, SchemaRef
12
12
  from ...schema import namely_model
13
13
 
14
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
15
14
  logger = logging.getLogger("uvicorn")
16
15
  logger.debug("Loaded module v3/bindings/schemas/utils")
17
16
 
tigrbl/core/crud/bulk.py CHANGED
@@ -21,7 +21,6 @@ from .helpers import (
21
21
  )
22
22
  from .ops import merge, read
23
23
 
24
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
25
24
  logger = logging.getLogger("uvicorn")
26
25
 
27
26
 
@@ -7,7 +7,6 @@ import logging
7
7
  from . import AsyncSession, Session
8
8
  from .model import _model_columns, _single_pk_name
9
9
 
10
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
11
10
  logger = logging.getLogger("uvicorn")
12
11
 
13
12
 
@@ -6,7 +6,6 @@ import logging
6
6
 
7
7
  from . import SAEnum
8
8
 
9
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
10
9
  logger = logging.getLogger("uvicorn")
11
10
 
12
11
 
@@ -7,7 +7,6 @@ import logging
7
7
  from . import select, and_, asc, desc
8
8
  from .model import _model_columns, _colspecs
9
9
 
10
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
11
10
  logger = logging.getLogger("uvicorn")
12
11
 
13
12
  _CANON_OPS = {
@@ -6,7 +6,6 @@ import logging
6
6
 
7
7
  from ....column.mro_collect import mro_collect_columns
8
8
 
9
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
10
9
  logger = logging.getLogger("uvicorn")
11
10
 
12
11
 
@@ -6,7 +6,6 @@ import logging
6
6
 
7
7
  from . import AsyncSession, Session
8
8
 
9
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
10
9
  logger = logging.getLogger("uvicorn")
11
10
 
12
11
 
tigrbl/core/crud/ops.py CHANGED
@@ -27,7 +27,6 @@ from .helpers import (
27
27
  _validate_enum_values,
28
28
  )
29
29
 
30
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
31
30
  logger = logging.getLogger("uvicorn")
32
31
 
33
32
 
@@ -0,0 +1,35 @@
1
+ # Tigrbl verbosity and uvicorn logging
2
+
3
+ Tigrbl logs through the `uvicorn` logger. This keeps its output aligned with the
4
+ server's log configuration, so debug statements only appear when uvicorn is
5
+ started in verbose mode.
6
+
7
+ ## Default behavior
8
+
9
+ By default, uvicorn runs at `INFO` level and suppresses debug output. Tigrbl does
10
+ not override that setting, so debug messages stay hidden unless you opt in.
11
+
12
+ ## Enabling verbose output
13
+
14
+ Use uvicorn's log-level to opt into debug output:
15
+
16
+ ```bash
17
+ uvicorn your_module:app --log-level debug
18
+ ```
19
+
20
+ Or configure it programmatically:
21
+
22
+ ```python
23
+ import uvicorn
24
+
25
+ config = uvicorn.Config("your_module:app", log_level="debug")
26
+ server = uvicorn.Server(config)
27
+ ```
28
+
29
+ ## Disabling verbose output
30
+
31
+ Set the log level back to `info` (or higher) to suppress debug messages:
32
+
33
+ ```bash
34
+ uvicorn your_module:app --log-level info
35
+ ```
tigrbl/engine/builders.py CHANGED
@@ -9,7 +9,6 @@ from sqlalchemy.orm import sessionmaker
9
9
 
10
10
  from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
11
11
 
12
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
13
12
  logger = logging.getLogger("uvicorn")
14
13
 
15
14
 
tigrbl/engine/resolver.py CHANGED
@@ -10,7 +10,6 @@ from typing import Any, Callable, Optional
10
10
  from ._engine import AsyncSession, Engine, Provider, Session
11
11
  from .engine_spec import EngineSpec, EngineCfg
12
12
 
13
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
14
13
  logger = logging.getLogger("uvicorn")
15
14
 
16
15
  # Registry with strict precedence: op > model > api > app
@@ -23,7 +23,6 @@ RunFn = Callable[[Optional[object], Any], None]
23
23
  #: { (domain, subject): (anchor, runner) }
24
24
  REGISTRY: Dict[Tuple[str, str], Tuple[str, RunFn]] = {}
25
25
 
26
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
27
26
  logger = logging.getLogger("uvicorn")
28
27
 
29
28
 
tigrbl/schema/collect.py CHANGED
@@ -11,7 +11,6 @@ from ..config.constants import TIGRBL_SCHEMA_DECLS_ATTR
11
11
  from .decorators import _SchemaDecl
12
12
  from pydantic import BaseModel, create_model
13
13
 
14
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
15
14
  logger = logging.getLogger("uvicorn")
16
15
 
17
16
 
@@ -7,7 +7,6 @@ from typing import Dict, Optional
7
7
 
8
8
  from ..config.constants import TIGRBL_SCHEMA_DECLS_ATTR
9
9
 
10
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
11
10
  logger = logging.getLogger("uvicorn")
12
11
 
13
12
 
@@ -5,7 +5,6 @@ from typing import Literal, Optional, Type
5
5
 
6
6
  from pydantic import BaseModel
7
7
 
8
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
9
8
  logger = logging.getLogger("uvicorn")
10
9
 
11
10
 
tigrbl/schema/utils.py CHANGED
@@ -5,7 +5,6 @@ from typing import Any, Dict, List, Type
5
5
 
6
6
  from pydantic import BaseModel, ConfigDict, Field, RootModel, create_model
7
7
 
8
- logging.getLogger("uvicorn").setLevel(logging.DEBUG)
9
8
  logger = logging.getLogger("uvicorn")
10
9
 
11
10
 
tigrbl/table/_base.py CHANGED
@@ -99,6 +99,10 @@ def _materialize_colspecs_to_sqla(cls) -> None:
99
99
  from tigrbl.column.column_spec import ColumnSpec
100
100
  except Exception:
101
101
  return
102
+ try:
103
+ from sqlalchemy.orm import InstrumentedAttribute
104
+ except Exception: # pragma: no cover - defensive for minimal SQLA envs
105
+ InstrumentedAttribute = None
102
106
 
103
107
  # Prefer explicit registry if present; otherwise collect specs from the
104
108
  # entire MRO so mixins contribute their ColumnSpec definitions.
@@ -123,6 +127,13 @@ def _materialize_colspecs_to_sqla(cls) -> None:
123
127
  if not storage:
124
128
  # Virtual (wire-only) column – no DB column
125
129
  continue
130
+ existing_attr = getattr(cls, name, None)
131
+ if InstrumentedAttribute is not None and isinstance(
132
+ existing_attr, InstrumentedAttribute
133
+ ):
134
+ # Column already mapped on a base class; avoid duplicating columns
135
+ # that trigger SQLAlchemy implicit combination warnings.
136
+ continue
126
137
 
127
138
  dtype = getattr(storage, "type_", None)
128
139
  if not dtype:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tigrbl
3
- Version: 0.3.1
3
+ Version: 0.3.2.dev1
4
4
  Summary: Automatic API generation tools by Swarmauri.
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -14,18 +14,18 @@ tigrbl/app/mro_collect.py,sha256=JfmkAnUGLgVVaevAjVU9O_8JMyJAYiTXTmrxW4EdPx8,202
14
14
  tigrbl/app/shortcuts.py,sha256=PEMbmwaqW8a3jkcHM5AXsYA2mmuXGFpOTnqlJnUX9Lo,1775
15
15
  tigrbl/app/tigrbl_app.py,sha256=4WqA509WekXx1BCW7Ph2tqdFEYkzcrHCYJz8MIVjG4w,11817
16
16
  tigrbl/bindings/__init__.py,sha256=GcM5PTKNLS1Jx__OiAcjLI5yybL40RrA8OzMVPno4_U,2643
17
- tigrbl/bindings/api/__init__.py,sha256=hqPCVcqQIsfLb_rU-rnK6gUKLVduYc3VujXV8lN0S_c,448
18
- tigrbl/bindings/api/common.py,sha256=2U5ig5JmrD3Vsq6SBgDMTSyq66aznNdw4yVqjghutFA,3652
19
- tigrbl/bindings/api/include.py,sha256=50uABoV0jQ1kFWi-imJ21EH4c-Y2XyuBZL5svVXUKQk,10074
20
- tigrbl/bindings/api/resource_proxy.py,sha256=9pYWgddaxGxRRst2gimkRsP-miCKFF06_4N1ZW35I4U,6040
21
- tigrbl/bindings/api/rpc.py,sha256=Dj8WkIoEaTAGyOgl5EAxX74b-4jB7uxSGFP-KwcQlkE,4155
17
+ tigrbl/bindings/api/__init__.py,sha256=ayw4ZBCvvUThQm9PXS6TyVkV1MEYY8YwGcyT4HwWZ7c,395
18
+ tigrbl/bindings/api/common.py,sha256=ivTUwC35QKj0-5op_dksHx4vTsf-fWLYJjwHGuFMKcA,3599
19
+ tigrbl/bindings/api/include.py,sha256=NsmtVXaGDavHMB6sibc_LXsvndCGkfS8qrfpKxbCoCY,10399
20
+ tigrbl/bindings/api/resource_proxy.py,sha256=hlrVxLe4NddEATvNIGT7imknfRG2FxhCo1qQw494K5I,5987
21
+ tigrbl/bindings/api/rpc.py,sha256=zUxde7A2bakpUemrrhWOVj7RDcm2j_T-dYw-IP4TDc0,4102
22
22
  tigrbl/bindings/columns.py,sha256=qy3WVEdDK1BCHwPBggCtRFrimjqVH6qdEtREBW1FUzY,1524
23
- tigrbl/bindings/handlers/__init__.py,sha256=NgJ3rfHjWGd4QZMNn1gE2mIFOvAm4ITgWrJQcSEyw8U,315
24
- tigrbl/bindings/handlers/builder.py,sha256=KnZzbfy978e1G8YsEZuVX6EULW7gYP1fGnDeaNxjTQA,4138
25
- tigrbl/bindings/handlers/ctx.py,sha256=nOhqvSIok13Gsv3w3H_1qjzDndWlZxOxz68Bc6I57ow,2233
26
- tigrbl/bindings/handlers/identifiers.py,sha256=CigqPizZzHhleoOvPNiNeKYlPYOzsZnq7nkJuWGU9YQ,7854
27
- tigrbl/bindings/handlers/namespaces.py,sha256=F1_5-96HM_ci4iQMEsxI6zDaY0vT70xr0MUtGoQmX_4,1790
28
- tigrbl/bindings/handlers/steps.py,sha256=SikxHwtFwsIaBgqzdJdAnVvdcATV4vBoYiaKC4oK7TM,9670
23
+ tigrbl/bindings/handlers/__init__.py,sha256=2jdCuiCJHawwNaV2_ZM914ff0Hb6HEqJXaL5e5uNmKo,262
24
+ tigrbl/bindings/handlers/builder.py,sha256=gqoIjORV2gERGhvFYDxgDEBEHJ7M9GVqGPAVMhoXV8s,4085
25
+ tigrbl/bindings/handlers/ctx.py,sha256=7GoqHSoCnPrXH91P2koNVR3KpWsaq3qa-sFIWjEumdw,2180
26
+ tigrbl/bindings/handlers/identifiers.py,sha256=jwVstF2X4SLePAk-BASYieXeaeOr3b08bWRplw5gVO0,7801
27
+ tigrbl/bindings/handlers/namespaces.py,sha256=zA_QDEVvzX7NPQ7pN1UJwVWmjJPlxeWJYdQ9u4nJ9s0,1737
28
+ tigrbl/bindings/handlers/steps.py,sha256=-Ypdjg_aFxo6vD814B6tfqZL1Dh4bG_Zmd5G6MXDDfE,9617
29
29
  tigrbl/bindings/hooks.py,sha256=tr5hI5ByfAHYQB8HClQ7RO1dg4wCFnfD0I1Jyse2AfU,12306
30
30
  tigrbl/bindings/model.py,sha256=ZgS-_NAnTJ55XyMJ9YkL2NxDFIm8LCao2XXyEO2-qoM,7553
31
31
  tigrbl/bindings/model_helpers.py,sha256=3rbt7YFT2ohBGNsd7nfKnnSnHz1nOmeE_xIyAjubBQQ,4493
@@ -42,10 +42,10 @@ tigrbl/bindings/rest/member.py,sha256=aSuvfBWMpGMx-rYK5Zr3Y2ATTBbBkj4IxaZyN0Yh91
42
42
  tigrbl/bindings/rest/router.py,sha256=ofkC_uLot5L5wfhyr3Vclzxog-5TjAn4Gd5D5haezRM,10877
43
43
  tigrbl/bindings/rest/routing.py,sha256=5Wi3fhgLysEcaHc2dzWk1523NcRZFJpcBiMKr4aaxlo,4440
44
44
  tigrbl/bindings/rpc.py,sha256=TsRNQ2q6LH7Dn8j_fguKimUOXRKUB8gmdOek7bp8Yjo,13196
45
- tigrbl/bindings/schemas/__init__.py,sha256=2D5skLUnHvtn0a4zm5AIxj2JHJN7GqFuCOr_hKslCuQ,313
46
- tigrbl/bindings/schemas/builder.py,sha256=nOTnaDCqGgptZEyFtAjNqfph2YcTytI7M35B2VJyz4o,13116
47
- tigrbl/bindings/schemas/defaults.py,sha256=fCyi8in6ItBzabwzz-7Er7NR8O3x3IhJPIQt4uyv7_U,9184
48
- tigrbl/bindings/schemas/utils.py,sha256=fLBKGNpcADJGePxRf9-s9sonBH3cAze1YwztcVJNGoA,7211
45
+ tigrbl/bindings/schemas/__init__.py,sha256=50vm4LQXdszYLOUa_6E-uBE7M4dUGAD3cQXMFfsJmDo,260
46
+ tigrbl/bindings/schemas/builder.py,sha256=yuoKxC2BbvyBBp-rpxPQKGN3NzAE2uy1gh_jDi__GaE,13063
47
+ tigrbl/bindings/schemas/defaults.py,sha256=gmRVX0b34uwY3luurph2j0YOyjO7255HGHRnwg6NWDY,9131
48
+ tigrbl/bindings/schemas/utils.py,sha256=NSDKpvB84luuFxvdWUDKbnLQrWD2tzek7dgyaTxhau4,7158
49
49
  tigrbl/column/README.md,sha256=TP7kbwSg0t5ZX68iAL0_62yC2cDOmwznIM23jXb4H5E,2169
50
50
  tigrbl/column/__init__.py,sha256=84Aa9AQbmAGnJrFcH5dF92WBqFllgbZjvoPaFHijOW4,1764
51
51
  tigrbl/column/_column.py,sha256=WUDeHCglwrX0lugixzsNvTk34iUrMLPCyIcnBieA0UQ,3219
@@ -67,14 +67,14 @@ tigrbl/config/defaults.py,sha256=W-5Aj1KLJWG6yhM4woDTPSAZhfNvGUX9Bb8u56bqKp0,194
67
67
  tigrbl/config/resolver.py,sha256=166-anq4FEhpSvOXePfDcG7Ot0v2iMNSKYP-y4JO3Aw,10301
68
68
  tigrbl/core/__init__.py,sha256=l-Ou_wKS46YCQvv7I_qnJHeVKRCFDhDYhdug0JX57M8,927
69
69
  tigrbl/core/crud/__init__.py,sha256=z8Uxbm9tXUGcpEB-T6pZUYlgzzkmUJeFKO74jg2ZgQw,581
70
- tigrbl/core/crud/bulk.py,sha256=MIGJ-ckijEIGv3IuJeRdikIk9E0OiqJ0PCOR_6KVHxY,5487
70
+ tigrbl/core/crud/bulk.py,sha256=h6q9B6eLt9nGx1rpzqLaqWHSNSTVkutP2Ryt8c7QWik,5434
71
71
  tigrbl/core/crud/helpers/__init__.py,sha256=g8VslEOv5zDYbAtzO5bPLsSqqf89tSw6ncJdqrInv4c,1716
72
- tigrbl/core/crud/helpers/db.py,sha256=sv402IrCYw-iHFTWvJ5xT0j6F-q87z53GVyTM0NZ8qc,2869
73
- tigrbl/core/crud/helpers/enum.py,sha256=ebmnsS4JlOlvlj0vbABvxLh0gq2IHF6rG0dDPndgi0Q,3010
74
- tigrbl/core/crud/helpers/filters.py,sha256=9GPgaHNYNhCSxUWA3QsAC9078fHU5Ws2-qnYR-0AIEA,4896
75
- tigrbl/core/crud/helpers/model.py,sha256=D3WMwlEZ1v-_Ex3SLpfRUi7O2teMnLswR1bu7ZCDrUY,4072
76
- tigrbl/core/crud/helpers/normalize.py,sha256=cAB8KAF-q1JcEfosrXkZMh51zgYMWX-P3lpz5j3RMpc,2940
77
- tigrbl/core/crud/ops.py,sha256=6BM04CVc5PT6TFPYYnQgRwhuaE8q2rI3zZtoeVqP2KA,7953
72
+ tigrbl/core/crud/helpers/db.py,sha256=VqyacIEomQcl8ATlr2rvoJmsECcqyKP1ImUaoVfYHvA,2816
73
+ tigrbl/core/crud/helpers/enum.py,sha256=oT6wZyrgnOQsOB2tsQXOSZSbBs9fJkw0dbFbc-Tny-M,2957
74
+ tigrbl/core/crud/helpers/filters.py,sha256=_S_W8Am_F7Gakm3gBCLSexeZRUZtOjfLuNSdykJfTsI,4843
75
+ tigrbl/core/crud/helpers/model.py,sha256=I_lcrJxeohEyFoptDsdxoAd6qJXc7pmzDjp7dbsuyYM,4019
76
+ tigrbl/core/crud/helpers/normalize.py,sha256=aDavCusuBDRltFX4baBlztDZ6dvgAG4Qs-DJQnNkfwc,2887
77
+ tigrbl/core/crud/ops.py,sha256=Qu0A4KNX0LuQdUXC5NcqzaN1aP49_ank4czEHArXcsQ,7900
78
78
  tigrbl/ddl/__init__.py,sha256=C9RQLef1l5XCE96CxCs0pN24fNATvOglK1zRYE7BdKY,11352
79
79
  tigrbl/decorators.py,sha256=U4iss3iN--4PPGJ90doAcYn4WuDx1dQMw-5Ar4SE7TU,445
80
80
  tigrbl/deps/__init__.py,sha256=yzhFPLJX8eXMIV41ar6IXh6ZXdjSlZ-ZYA_FKl-ZxFY,795
@@ -84,10 +84,11 @@ tigrbl/deps/jinja.py,sha256=dau8Y2v9UY3sptLhzP_8MpjKwlU-34_QraNgQXr4OCM,698
84
84
  tigrbl/deps/pydantic.py,sha256=cLReo5Gd3V7TDJ9L3sMOFD93FWMd5QnZZoCaOJ6ip14,497
85
85
  tigrbl/deps/sqlalchemy.py,sha256=0gdeq-l-5XgMVpykrSQ-NPA-sojIaVoa1BG_NSjojjQ,2392
86
86
  tigrbl/deps/starlette.py,sha256=I90mc0aLxDymtf0mne2tT03rOLpfS7F9x_bYLVIeJGs,1001
87
+ tigrbl/docs/verbosity.md,sha256=k71sl1oCiHPDwyUVmKX9s331zZAzyiivHNgPS4Q9jqw,853
87
88
  tigrbl/engine/__init__.py,sha256=6Vv8FqSaA1xSKqegmFd2jNM2xeuw6h8rI9cNMn9qj_A,1092
88
89
  tigrbl/engine/_engine.py,sha256=MGsYL3FjNzXqBCeLwmmucCvqxqRYBX4cXLCuKQv46_o,4571
89
90
  tigrbl/engine/bind.py,sha256=BsUYNfUCPAp4o0Lvb-_-wmvrRptmucGbzs2Janm2A8Y,1065
90
- tigrbl/engine/builders.py,sha256=HN_zDN-aFA3LzAjNKrByWY_LdNhgkbdGVbgjgkxO0Wk,8599
91
+ tigrbl/engine/builders.py,sha256=ArPUdZfSembosGQ9EjzEoHX8jNbfCh3HjIG8uMPj8FE,8546
91
92
  tigrbl/engine/capabilities.py,sha256=7bj0nPtmi8a-x9wD-eq2gKH_KOs0adwyDl5tc4kVuHE,1099
92
93
  tigrbl/engine/collect.py,sha256=aYJZckPRoEM2P7glpikpcg5tvDDZuOliwxeik-C5KNs,3808
93
94
  tigrbl/engine/decorators.py,sha256=xYra9IUF8gR72EsKHfZApPmOWze_lGL_MDXlv5XDfMY,3981
@@ -95,7 +96,7 @@ tigrbl/engine/docs/PLUGINS.md,sha256=jcKf_e8X1c3zZfEWCiGgeblfq5nGXTnu2uvDX_B_RdM
95
96
  tigrbl/engine/engine_spec.py,sha256=zVgQSzkwR53Z1cx1VOoHX449BSYe1QE8YnoXZMMqNdA,13047
96
97
  tigrbl/engine/plugins.py,sha256=UveqYo9VlDn4Y7xgGvsHi_O1ugd0kBYxIuyFMSDWoug,1497
97
98
  tigrbl/engine/registry.py,sha256=MmTe7job1W9k18-g0fx6rZzVU9-D_5fElW9TXo0_HxA,1113
98
- tigrbl/engine/resolver.py,sha256=3Ds6WEgFoIYcIDyaHprUKPCZ6CYWW0JLG3iqlSTPNEQ,7664
99
+ tigrbl/engine/resolver.py,sha256=OIIIssUd6nvn9qzmK_pIdSv4IyemrvW1BdfUQ2m-5QI,7611
99
100
  tigrbl/engine/shortcuts.py,sha256=BR_u3wsrkp83vup_jtNUTp5a2LrSLKxFj1vYTVIYsL4,6519
100
101
  tigrbl/hook/__init__.py,sha256=PtUNKKLQ1CAdkxFQgymutDkNzeyeVOfnMq2jQ_fbKIs,448
101
102
  tigrbl/hook/_hook.py,sha256=goaEq7ktHjin7bjrFKdynCjnVkG59Pnxe6XzPEABFJY,470
@@ -151,7 +152,7 @@ tigrbl/response/types.py,sha256=110etKRHl0jnnhwFPCWwl6DawQ7cOel1yq4lo3r9KIk,1329
151
152
  tigrbl/rest/__init__.py,sha256=XmCGc3HdPqRJfzehJj1MfhpJFlheDMMlVSZz1EE2yZQ,824
152
153
  tigrbl/runtime/README.md,sha256=0sCqYWNPcdG6tFA7fVyri2DVbuTsiw3T5WwnTzF-i78,5956
153
154
  tigrbl/runtime/__init__.py,sha256=BDNx_j144HZmcsDP9XT4WWgm1Q0aaigiXXRA22XBu90,449
154
- tigrbl/runtime/atoms/__init__.py,sha256=eITXXXADt8QgidEd90t2Mwws4126EY1XBn-pck_TejI,3571
155
+ tigrbl/runtime/atoms/__init__.py,sha256=aWjrXPlHtzpIZ-PiLqMHSHw4r0TNNWuvQqaEd7Xlqes,3518
155
156
  tigrbl/runtime/atoms/emit/__init__.py,sha256=YgytttKDl157MmmL47vPHOhprjxwQFl4Isg1-wTnHsI,1481
156
157
  tigrbl/runtime/atoms/emit/paired_post.py,sha256=z1RpiKDqCsSJPvNTUEivHr80B3c2uvCWrqg0b-k_GN8,5859
157
158
  tigrbl/runtime/atoms/emit/paired_pre.py,sha256=jRMug4PGdV1MR242svC6_nkkHk-e1ysVdvJTRtj0SGI,4047
@@ -209,13 +210,13 @@ tigrbl/schema/builder/extras.py,sha256=t-94VjVULlTDFsRDJ3IBkBUFYkwZbWajjS1JIyTEx
209
210
  tigrbl/schema/builder/helpers.py,sha256=_YfZh1-bgfWrQ912eq77M6nG4XsrNY_qFODtUux1CgQ,1386
210
211
  tigrbl/schema/builder/list_params.py,sha256=DL97zDb271FtzBXk0FTcDzrnrRzeQorkdYNP8kuxsG8,3537
211
212
  tigrbl/schema/builder/strip_parent_fields.py,sha256=i2H3gzbcbhZT0Ddq0Uj9ESN_Bsfc-c54gRzXROtjjiI,2250
212
- tigrbl/schema/collect.py,sha256=JmHAoa5rIc5vsJraI_JF6FA9mV4-Q6FHEPc3ItjOkz0,2772
213
- tigrbl/schema/decorators.py,sha256=HISPz7aeTWx9kG8Z5OW0UddY-wXM3ICpdLn98wIUx1w,2171
214
- tigrbl/schema/get_schema.py,sha256=_yMadRKoQUA37yMfS98xQpb1jIQeOBelbnUKa_b5GHQ,2572
213
+ tigrbl/schema/collect.py,sha256=vYC6vsbOlODFtet7VOs2ljRt-iCuxOf0XMEvxwvEiDA,2719
214
+ tigrbl/schema/decorators.py,sha256=BNYAd9agtPiwdQCpwckvILmSy-5A62TCithufiOpA0w,2118
215
+ tigrbl/schema/get_schema.py,sha256=6KMkfHr664zjFHHYLt0BT09WOfbV21ZMjXPrzqOUzkA,2519
215
216
  tigrbl/schema/schema_spec.py,sha256=un30EyrHnzXVi5O8Q4yUHzSFrBERhVPHxrMEyxJpYW8,429
216
217
  tigrbl/schema/shortcuts.py,sha256=ExUWm51DBaN99FjO3_A59imzhWV-0QOJIpresWSlUGk,921
217
218
  tigrbl/schema/types.py,sha256=-F7OkmqGE9Dot7DhiLe1_EBq27ei_bLUqP1qJj0KKeQ,803
218
- tigrbl/schema/utils.py,sha256=KEAljLM2eWV5nTS-fDod4fTLVOsUVqf2VQ39mwMSV1w,4741
219
+ tigrbl/schema/utils.py,sha256=T-LWbotZbThyARGZcEyJK4NOj--F8J45ERsByynVGvI,4688
219
220
  tigrbl/session/README.md,sha256=KwwLMo080URVFsmVE2QPsda4-nm3LsKIky408zl_C8o,744
220
221
  tigrbl/session/__init__.py,sha256=N_5cgpnBWtis1lmTyb1Bkc4eTrSSFYDUA169LEjbbJE,613
221
222
  tigrbl/session/abc.py,sha256=gn_4lqwdH-i-4sQeBsQ3C34mS9Ct21aCZpqXiDP6zpw,2311
@@ -237,7 +238,7 @@ tigrbl/system/diagnostics/router.py,sha256=5RAv6LPoN4luGwIPnYGak66uT9FslYPc-d_GK
237
238
  tigrbl/system/diagnostics/utils.py,sha256=qxC8pUNK2lQKh5cGlF-PSFA-cfJFLlAHW0-iEosvPgg,1172
238
239
  tigrbl/system/uvicorn.py,sha256=ogvIqfv-1CxAPZ8BADucaNAy_ePsLA3IVIZxmhdfL3A,1526
239
240
  tigrbl/table/__init__.py,sha256=yyP9iZBUJh-D7TCy9WQIvMXKL3ztyX-EXdTK4RTE7iw,207
240
- tigrbl/table/_base.py,sha256=OpZHeV2dQtWd8yom2wntmHBV5QwWcCUJITIoDOJGBoA,9938
241
+ tigrbl/table/_base.py,sha256=2PCazG2fUuMCqTOghPsa2W7f2de-e31tX78ckfcVbHw,10456
241
242
  tigrbl/table/_table.py,sha256=B7ft2SMnbp3aTWKO44M4EWTHmzFKyQlpdj-3QULRaGk,1740
242
243
  tigrbl/table/mro_collect.py,sha256=JwL0zAeLNUgJcgd2JuLKcbFc806zBguhFqpCkeZyzRw,2027
243
244
  tigrbl/table/shortcuts.py,sha256=-IZAZyMTsiCdKV0w7nq1C2YBsB6iE_uNGJb-PatlO8I,1716
@@ -260,7 +261,7 @@ tigrbl/types/request_extras_provider.py,sha256=JOIpzx1PYA2AYYvkMiXrxlwpBLOPD2cQa
260
261
  tigrbl/types/response_extras_provider.py,sha256=sFB0R3vyUqmpT-o8983hH9FAlOq6-wwNVK6vfuCPHCg,653
261
262
  tigrbl/types/table_config_provider.py,sha256=EkfOhy9UDfy7EgiZddw9KIl5tRujRjXJlr4cSk1Rm5k,361
262
263
  tigrbl/types/uuid.py,sha256=pD-JrhS0L2GXeJ0Hv_oKzRuiXmxHDTVoMqExO48iqZE,1993
263
- tigrbl-0.3.1.dist-info/METADATA,sha256=hQLW4W1KzwgBkvTZ0cLSbVRTRC5pvcRtDhfPF1dsd_g,17848
264
- tigrbl-0.3.1.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
265
- tigrbl-0.3.1.dist-info/licenses/LICENSE,sha256=djUXOlCxLVszShEpZXshZ7v33G-2qIC_j9KXpWKZSzQ,11359
266
- tigrbl-0.3.1.dist-info/RECORD,,
264
+ tigrbl-0.3.2.dev1.dist-info/METADATA,sha256=_XdyS757AmpJyg3k2bEkaD0p5aY-_DHbCcye2UPscs8,17853
265
+ tigrbl-0.3.2.dev1.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
266
+ tigrbl-0.3.2.dev1.dist-info/licenses/LICENSE,sha256=djUXOlCxLVszShEpZXshZ7v33G-2qIC_j9KXpWKZSzQ,11359
267
+ tigrbl-0.3.2.dev1.dist-info/RECORD,,