piccolo 1.20.0__tar.gz → 1.22.0__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.
- {piccolo-1.20.0 → piccolo-1.22.0}/PKG-INFO +7 -21
- piccolo-1.22.0/piccolo/__init__.py +1 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/playground/commands/run.py +9 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/column_types.py +78 -39
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/base.py +11 -6
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/select.py +1 -1
- piccolo-1.22.0/piccolo/query/operators/json.py +111 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/querystring.py +14 -2
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/table_reflection.py +17 -5
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo.egg-info/PKG-INFO +7 -21
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo.egg-info/SOURCES.txt +4 -2
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo.egg-info/entry_points.txt +1 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo.egg-info/requires.txt +2 -2
- {piccolo-1.20.0 → piccolo-1.22.0}/setup.py +2 -2
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_db_column_name.py +58 -13
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_jsonb.py +100 -43
- piccolo-1.22.0/tests/query/operators/test_json.py +52 -0
- piccolo-1.22.0/tests/testing/__init__.py +0 -0
- piccolo-1.22.0/tests/utils/__init__.py +0 -0
- piccolo-1.20.0/piccolo/__init__.py +0 -1
- piccolo-1.20.0/tests/test_main.py +0 -9
- piccolo-1.20.0/tests/test_schema.py +0 -183
- {piccolo-1.20.0 → piccolo-1.22.0}/LICENSE +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/README.md +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/app/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/app/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/app/commands/new.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/app/commands/show_all.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/app/commands/templates/piccolo_app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/app/commands/templates/tables.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/app/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/new.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/README.md.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/_blacksheep_app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/_esmerald_app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/_fastapi_app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/_lilya_app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/_litestar_app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/_starlette_app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/conftest.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/__init__.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/_blacksheep_endpoints.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/_esmerald_endpoints.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/_lilya_endpoints.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/_litestar_endpoints.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/_starlette_endpoints.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/endpoints.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/piccolo_app.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/piccolo_migrations/README.md +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/tables.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/templates/base.html.jinja_raw +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/home/templates/home.html.jinja_raw +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/main.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/piccolo_conf.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/piccolo_conf_test.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/requirements.txt.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/static/favicon.ico +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/commands/templates/app/static/main.css +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/asgi/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/fixtures/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/fixtures/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/fixtures/commands/dump.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/fixtures/commands/load.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/fixtures/commands/shared.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/fixtures/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/meta/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/meta/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/meta/commands/version.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/meta/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/auto/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/auto/diffable_table.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/auto/migration_manager.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/auto/operations.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/auto/schema_differ.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/auto/schema_snapshot.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/auto/serialisation.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/auto/serialisation_legacy.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/commands/backwards.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/commands/base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/commands/check.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/commands/clean.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/commands/forwards.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/commands/new.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/commands/templates/migration.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/migrations/tables.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/playground/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/playground/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/playground/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/project/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/project/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/project/commands/new.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/project/commands/templates/piccolo_conf.py.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/project/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/schema/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/schema/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/schema/commands/exceptions.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/schema/commands/generate.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/schema/commands/graph.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/schema/commands/templates/graphviz.dot.jinja +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/schema/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/shell/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/shell/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/shell/commands/run.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/shell/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/sql_shell/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/sql_shell/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/sql_shell/commands/run.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/sql_shell/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/tester/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/tester/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/tester/commands/run.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/tester/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/commands/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/commands/change_password.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/commands/change_permissions.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/commands/create.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/commands/list.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/piccolo_migrations/2019-11-14T21-52-21.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/piccolo_migrations/2020-06-11T21-38-55.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/piccolo_migrations/2021-04-30T16-14-15.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/piccolo_migrations/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/apps/user/tables.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/choices.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/combination.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/defaults/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/defaults/base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/defaults/date.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/defaults/interval.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/defaults/time.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/defaults/timestamp.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/defaults/timestamptz.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/defaults/uuid.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/indexes.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/m2m.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/operators/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/operators/base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/operators/comparison.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/operators/math.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/operators/string.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/readable.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/columns/reference.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/conf/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/conf/apps.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/custom_types.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/engine/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/engine/base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/engine/cockroach.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/engine/exceptions.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/engine/finder.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/engine/postgres.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/engine/sqlite.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/main.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/py.typed +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/functions/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/functions/aggregate.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/functions/base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/functions/datetime.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/functions/math.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/functions/string.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/functions/type_conversion.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/alter.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/count.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/create.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/create_index.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/delete.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/drop_index.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/exists.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/indexes.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/insert.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/objects.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/raw.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/refresh.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/table_exists.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/methods/update.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/mixins.py +0 -0
- {piccolo-1.20.0/profiling → piccolo-1.22.0/piccolo/query/operators}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/query/proxy.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/schema.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/table.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/testing/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/testing/model_builder.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/testing/random_builder.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/testing/test_case.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/dictionary.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/encoding.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/graphlib/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/graphlib/_graphlib.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/lazy_loader.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/list.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/naming.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/objects.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/printing.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/pydantic.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/repr.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/sql_values.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/sync.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo/utils/warnings.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo.egg-info/dependency_links.txt +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/piccolo.egg-info/top_level.txt +0 -0
- {piccolo-1.20.0/tests/apps → piccolo-1.22.0/profiling}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/profiling/run_profile.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/pyproject.toml +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/setup.cfg +0 -0
- {piccolo-1.20.0/tests/apps/app → piccolo-1.22.0/tests/apps}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/app/commands → piccolo-1.22.0/tests/apps/app}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/asgi → piccolo-1.22.0/tests/apps/app/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/app/commands/test_new.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/app/commands/test_show_all.py +0 -0
- {piccolo-1.20.0/tests/apps/asgi/commands → piccolo-1.22.0/tests/apps/asgi}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/fixtures → piccolo-1.22.0/tests/apps/asgi/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/asgi/commands/test_new.py +0 -0
- {piccolo-1.20.0/tests/apps/fixtures/commands → piccolo-1.22.0/tests/apps/fixtures}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/meta → piccolo-1.22.0/tests/apps/fixtures/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/fixtures/commands/test_dump_load.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/fixtures/commands/test_shared.py +0 -0
- {piccolo-1.20.0/tests/apps/meta/commands → piccolo-1.22.0/tests/apps/meta}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/migrations → piccolo-1.22.0/tests/apps/meta/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/meta/commands/test_version.py +0 -0
- {piccolo-1.20.0/tests/apps/migrations/auto → piccolo-1.22.0/tests/apps/migrations}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/migrations/auto/integration → piccolo-1.22.0/tests/apps/migrations/auto}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/migrations/commands → piccolo-1.22.0/tests/apps/migrations/auto/integration}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/auto/integration/test_migrations.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/auto/test_diffable_table.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/auto/test_migration_manager.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/auto/test_schema_differ.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/auto/test_schema_snapshot.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/auto/test_serialisation.py +0 -0
- {piccolo-1.20.0/tests/apps/migrations/commands/test_migrations → piccolo-1.22.0/tests/apps/migrations/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/commands/test_base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/commands/test_check.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/commands/test_clean.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/commands/test_forwards_backwards.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/commands/test_migrations/2020-03-31T20-38-22.py +0 -0
- {piccolo-1.20.0/tests/apps/project → piccolo-1.22.0/tests/apps/migrations/commands/test_migrations}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/commands/test_new.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/migrations/test_migration.py +0 -0
- {piccolo-1.20.0/tests/apps/project/commands → piccolo-1.22.0/tests/apps/project}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/schema → piccolo-1.22.0/tests/apps/project/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/project/commands/test_new.py +0 -0
- {piccolo-1.20.0/tests/apps/shell → piccolo-1.22.0/tests/apps/schema}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/shell/commands → piccolo-1.22.0/tests/apps/shell}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/sql_shell → piccolo-1.22.0/tests/apps/shell/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/shell/commands/test_run.py +0 -0
- {piccolo-1.20.0/tests/apps/sql_shell/commands → piccolo-1.22.0/tests/apps/sql_shell}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/tester → piccolo-1.22.0/tests/apps/sql_shell/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/sql_shell/commands/test_run.py +0 -0
- {piccolo-1.20.0/tests/apps/user → piccolo-1.22.0/tests/apps/tester}/__init__.py +0 -0
- {piccolo-1.20.0/tests/apps/user/commands → piccolo-1.22.0/tests/apps/user}/__init__.py +0 -0
- {piccolo-1.20.0/tests/columns → piccolo-1.22.0/tests/apps/user/commands}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/user/commands/test_change_password.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/user/commands/test_change_permissions.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/user/commands/test_create.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/user/commands/test_list.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/apps/user/test_tables.py +0 -0
- {piccolo-1.20.0/tests/columns/m2m → piccolo-1.22.0/tests/columns}/__init__.py +0 -0
- {piccolo-1.20.0/tests/conf → piccolo-1.22.0/tests/columns/m2m}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/m2m/base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/m2m/test_m2m.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/m2m/test_m2m_schema.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_array.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_bigint.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_boolean.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_bytea.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_choices.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_combination.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_date.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_defaults.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_double_precision.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_get_sql_value.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_interval.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_json.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_numeric.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_primary_key.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_readable.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_real.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_reference.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_reserved_column_names.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_smallint.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_time.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_timestamp.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_timestamptz.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_uuid.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/columns/test_varchar.py +0 -0
- {piccolo-1.20.0/tests/engine → piccolo-1.22.0/tests/conf}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/conf/example.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/conf/test_apps.py +0 -0
- {piccolo-1.20.0/tests/example_apps → piccolo-1.22.0/tests/engine}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/engine/test_extra_nodes.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/engine/test_logging.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/engine/test_nested_transaction.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/engine/test_pool.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/engine/test_transaction.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/engine/test_version_parsing.py +0 -0
- {piccolo-1.20.0/tests/example_apps/mega → piccolo-1.22.0/tests/example_apps}/__init__.py +0 -0
- {piccolo-1.20.0/tests/example_apps/mega/piccolo_migrations → piccolo-1.22.0/tests/example_apps/mega}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/example_apps/mega/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/example_apps/mega/piccolo_migrations/2021-09-20T21-23-25-698988.py +0 -0
- {piccolo-1.20.0/tests/example_apps/music → piccolo-1.22.0/tests/example_apps/mega/piccolo_migrations}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/example_apps/mega/tables.py +0 -0
- {piccolo-1.20.0/tests/query → piccolo-1.22.0/tests/example_apps/music}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/example_apps/music/piccolo_app.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/example_apps/music/tables.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/example_apps/music/tables_detailed.py +0 -0
- {piccolo-1.20.0/tests/query/functions → piccolo-1.22.0/tests/query}/__init__.py +0 -0
- {piccolo-1.20.0/tests/query/mixins → piccolo-1.22.0/tests/query/functions}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/functions/base.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/functions/test_datetime.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/functions/test_functions.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/functions/test_math.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/functions/test_string.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/functions/test_type_conversion.py +0 -0
- {piccolo-1.20.0/tests/table → piccolo-1.22.0/tests/query/mixins}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/mixins/test_columns_delegate.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/mixins/test_order_by_delegate.py +0 -0
- {piccolo-1.20.0/tests/table/instance → piccolo-1.22.0/tests/query/operators}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/test_await.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/test_camelcase.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/test_freeze.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/test_gather.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/test_querystring.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/query/test_slots.py +0 -0
- {piccolo-1.20.0/tests/testing → piccolo-1.22.0/tests/table}/__init__.py +0 -0
- {piccolo-1.20.0/tests/utils → piccolo-1.22.0/tests/table/instance}/__init__.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/instance/test_create.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/instance/test_get_related.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/instance/test_get_related_readable.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/instance/test_instantiate.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/instance/test_remove.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/instance/test_save.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/instance/test_to_dict.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_all_columns.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_alter.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_batch.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_callback.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_constructor.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_count.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_create.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_create_db_tables.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_create_table_class.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_delete.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_drop_db_tables.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_exists.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_from_dict.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_indexes.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_inheritance.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_insert.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_join.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_join_on.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_metaclass.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_objects.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_output.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_raw.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_ref.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_refresh.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_repr.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_select.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_str.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_table_exists.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_update.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/table/test_update_self.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/testing/test_model_builder.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/testing/test_random_builder.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/testing/test_test_case.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_dictionary.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_encoding.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_lazy_loader.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_list.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_naming.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_printing.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_pydantic.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_sql_values.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_sync.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_table_reflection.py +0 -0
- {piccolo-1.20.0 → piccolo-1.22.0}/tests/utils/test_warnings.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: piccolo
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.22.0
|
4
4
|
Summary: A fast, user friendly ORM and query builder which supports asyncio.
|
5
5
|
Home-page: https://github.com/piccolo-orm/piccolo
|
6
6
|
Author: Daniel Townsend
|
@@ -9,44 +9,28 @@ License: MIT
|
|
9
9
|
Project-URL: Documentation, https://piccolo-orm.readthedocs.io/en/latest/index.html
|
10
10
|
Project-URL: Source, https://github.com/piccolo-orm/piccolo
|
11
11
|
Project-URL: Tracker, https://github.com/piccolo-orm/piccolo/issues
|
12
|
+
Platform: UNKNOWN
|
12
13
|
Classifier: License :: OSI Approved :: MIT License
|
13
14
|
Classifier: Programming Language :: Python
|
14
15
|
Classifier: Programming Language :: Python :: 3
|
15
|
-
Classifier: Programming Language :: Python :: 3.8
|
16
16
|
Classifier: Programming Language :: Python :: 3.9
|
17
17
|
Classifier: Programming Language :: Python :: 3.10
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
20
21
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
21
22
|
Classifier: Framework :: AsyncIO
|
22
23
|
Classifier: Typing :: Typed
|
23
24
|
Classifier: Topic :: Database
|
24
|
-
Requires-Python: >=3.
|
25
|
+
Requires-Python: >=3.9.0
|
25
26
|
Description-Content-Type: text/markdown
|
26
|
-
License-File: LICENSE
|
27
|
-
Requires-Dist: black
|
28
|
-
Requires-Dist: colorama>=0.4.0
|
29
|
-
Requires-Dist: Jinja2>=2.11.0
|
30
|
-
Requires-Dist: targ>=0.3.7
|
31
|
-
Requires-Dist: inflection>=0.5.1
|
32
|
-
Requires-Dist: typing-extensions>=4.3.0
|
33
|
-
Requires-Dist: pydantic[email]==2.*
|
34
27
|
Provides-Extra: orjson
|
35
|
-
Requires-Dist: orjson>=3.5.1; extra == "orjson"
|
36
28
|
Provides-Extra: playground
|
37
|
-
Requires-Dist: ipython; extra == "playground"
|
38
29
|
Provides-Extra: postgres
|
39
|
-
Requires-Dist: asyncpg>=0.21.0; extra == "postgres"
|
40
30
|
Provides-Extra: sqlite
|
41
|
-
Requires-Dist: aiosqlite>=0.16.0; extra == "sqlite"
|
42
31
|
Provides-Extra: uvloop
|
43
|
-
Requires-Dist: uvloop>=0.12.0; sys_platform != "win32" and extra == "uvloop"
|
44
32
|
Provides-Extra: all
|
45
|
-
|
46
|
-
Requires-Dist: ipython; extra == "all"
|
47
|
-
Requires-Dist: asyncpg>=0.21.0; extra == "all"
|
48
|
-
Requires-Dist: aiosqlite>=0.16.0; extra == "all"
|
49
|
-
Requires-Dist: uvloop>=0.12.0; sys_platform != "win32" and extra == "all"
|
33
|
+
License-File: LICENSE
|
50
34
|
|
51
35
|

|
52
36
|
|
@@ -155,3 +139,5 @@ We have a handy page which shows the equivalent of [common Django queries in Pic
|
|
155
139
|
Our documentation is on [Read the docs](https://piccolo-orm.readthedocs.io/en/latest/piccolo/getting_started/index.html).
|
156
140
|
|
157
141
|
We also have some great [tutorial videos on YouTube](https://www.youtube.com/channel/UCE7x5nm1Iy9KDfXPNrNQ5lA).
|
142
|
+
|
143
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
__VERSION__ = "1.22.0"
|
@@ -233,6 +233,11 @@ def populate():
|
|
233
233
|
RecordingStudio.facilities: {
|
234
234
|
"restaurant": True,
|
235
235
|
"mixing_desk": True,
|
236
|
+
"instruments": {"electric_guitars": 10, "drum_kits": 2},
|
237
|
+
"technicians": [
|
238
|
+
{"name": "Alice Jones"},
|
239
|
+
{"name": "Bob Williams"},
|
240
|
+
],
|
236
241
|
},
|
237
242
|
}
|
238
243
|
)
|
@@ -244,6 +249,10 @@ def populate():
|
|
244
249
|
RecordingStudio.facilities: {
|
245
250
|
"restaurant": False,
|
246
251
|
"mixing_desk": True,
|
252
|
+
"instruments": {"electric_guitars": 6, "drum_kits": 3},
|
253
|
+
"technicians": [
|
254
|
+
{"name": "Frank Smith"},
|
255
|
+
],
|
247
256
|
},
|
248
257
|
},
|
249
258
|
)
|
@@ -70,6 +70,10 @@ from piccolo.utils.warnings import colored_warning
|
|
70
70
|
|
71
71
|
if t.TYPE_CHECKING: # pragma: no cover
|
72
72
|
from piccolo.columns.base import ColumnMeta
|
73
|
+
from piccolo.query.operators.json import (
|
74
|
+
GetChildElement,
|
75
|
+
GetElementFromPath,
|
76
|
+
)
|
73
77
|
from piccolo.table import Table
|
74
78
|
|
75
79
|
|
@@ -2319,6 +2323,76 @@ class JSON(Column):
|
|
2319
2323
|
else:
|
2320
2324
|
return "JSON"
|
2321
2325
|
|
2326
|
+
###########################################################################
|
2327
|
+
|
2328
|
+
def arrow(self, key: t.Union[str, int, QueryString]) -> GetChildElement:
|
2329
|
+
"""
|
2330
|
+
Allows a child element of the JSON structure to be returned - for
|
2331
|
+
example::
|
2332
|
+
|
2333
|
+
>>> await RecordingStudio.select(
|
2334
|
+
... RecordingStudio.facilities.arrow("restaurant")
|
2335
|
+
... )
|
2336
|
+
|
2337
|
+
"""
|
2338
|
+
from piccolo.query.operators.json import GetChildElement
|
2339
|
+
|
2340
|
+
alias = self._alias or self._meta.get_default_alias()
|
2341
|
+
return GetChildElement(identifier=self, key=key, alias=alias)
|
2342
|
+
|
2343
|
+
def __getitem__(
|
2344
|
+
self, value: t.Union[str, int, QueryString]
|
2345
|
+
) -> GetChildElement:
|
2346
|
+
"""
|
2347
|
+
A shortcut for the ``arrow`` method, used for retrieving a child
|
2348
|
+
element.
|
2349
|
+
|
2350
|
+
For example:
|
2351
|
+
|
2352
|
+
.. code-block:: python
|
2353
|
+
|
2354
|
+
>>> await RecordingStudio.select(
|
2355
|
+
... RecordingStudio.facilities["restaurant"]
|
2356
|
+
... )
|
2357
|
+
|
2358
|
+
"""
|
2359
|
+
return self.arrow(key=value)
|
2360
|
+
|
2361
|
+
def from_path(
|
2362
|
+
self,
|
2363
|
+
path: t.List[t.Union[str, int]],
|
2364
|
+
) -> GetElementFromPath:
|
2365
|
+
"""
|
2366
|
+
Allows an element of the JSON structure to be returned, which can be
|
2367
|
+
arbitrarily deep. For example::
|
2368
|
+
|
2369
|
+
>>> await RecordingStudio.select(
|
2370
|
+
... RecordingStudio.facilities.from_path([
|
2371
|
+
... "technician",
|
2372
|
+
... 0,
|
2373
|
+
... "first_name"
|
2374
|
+
... ])
|
2375
|
+
... )
|
2376
|
+
|
2377
|
+
It's the same as calling ``arrow`` multiple times, but is more
|
2378
|
+
efficient / convenient if extracting highly nested data::
|
2379
|
+
|
2380
|
+
>>> await RecordingStudio.select(
|
2381
|
+
... RecordingStudio.facilities.arrow(
|
2382
|
+
... "technician"
|
2383
|
+
... ).arrow(
|
2384
|
+
... 0
|
2385
|
+
... ).arrow(
|
2386
|
+
... "first_name"
|
2387
|
+
... )
|
2388
|
+
... )
|
2389
|
+
|
2390
|
+
"""
|
2391
|
+
from piccolo.query.operators.json import GetElementFromPath
|
2392
|
+
|
2393
|
+
alias = self._alias or self._meta.get_default_alias()
|
2394
|
+
return GetElementFromPath(identifier=self, path=path, alias=alias)
|
2395
|
+
|
2322
2396
|
###########################################################################
|
2323
2397
|
# Descriptors
|
2324
2398
|
|
@@ -2337,10 +2411,10 @@ class JSON(Column):
|
|
2337
2411
|
|
2338
2412
|
class JSONB(JSON):
|
2339
2413
|
"""
|
2340
|
-
Used for storing JSON strings - Postgres only. The data is
|
2341
|
-
binary format, and can be queried. Insertion
|
2342
|
-
be converted to the binary format). The
|
2343
|
-
outweigh the downsides.
|
2414
|
+
Used for storing JSON strings - Postgres / CochroachDB only. The data is
|
2415
|
+
stored in a binary format, and can be queried more efficiently. Insertion
|
2416
|
+
can be slower (as it needs to be converted to the binary format). The
|
2417
|
+
benefits of JSONB generally outweigh the downsides.
|
2344
2418
|
|
2345
2419
|
:param default:
|
2346
2420
|
Either a JSON string can be provided, or a Python ``dict`` or ``list``
|
@@ -2352,41 +2426,6 @@ class JSONB(JSON):
|
|
2352
2426
|
def column_type(self):
|
2353
2427
|
return "JSONB" # Must be defined, we override column_type() in JSON()
|
2354
2428
|
|
2355
|
-
def arrow(self, key: str) -> JSONB:
|
2356
|
-
"""
|
2357
|
-
Allows part of the JSON structure to be returned - for example,
|
2358
|
-
for {"a": 1}, and a key value of "a", then 1 will be returned.
|
2359
|
-
"""
|
2360
|
-
instance = t.cast(JSONB, self.copy())
|
2361
|
-
instance.json_operator = f"-> '{key}'"
|
2362
|
-
return instance
|
2363
|
-
|
2364
|
-
def get_select_string(
|
2365
|
-
self, engine_type: str, with_alias: bool = True
|
2366
|
-
) -> QueryString:
|
2367
|
-
select_string = self._meta.get_full_name(with_alias=False)
|
2368
|
-
|
2369
|
-
if self.json_operator is not None:
|
2370
|
-
select_string += f" {self.json_operator}"
|
2371
|
-
|
2372
|
-
if with_alias:
|
2373
|
-
alias = self._alias or self._meta.get_default_alias()
|
2374
|
-
select_string += f' AS "{alias}"'
|
2375
|
-
|
2376
|
-
return QueryString(select_string)
|
2377
|
-
|
2378
|
-
def eq(self, value) -> Where:
|
2379
|
-
"""
|
2380
|
-
See ``Boolean.eq`` for more details.
|
2381
|
-
"""
|
2382
|
-
return self.__eq__(value)
|
2383
|
-
|
2384
|
-
def ne(self, value) -> Where:
|
2385
|
-
"""
|
2386
|
-
See ``Boolean.ne`` for more details.
|
2387
|
-
"""
|
2388
|
-
return self.__ne__(value)
|
2389
|
-
|
2390
2429
|
###########################################################################
|
2391
2430
|
# Descriptors
|
2392
2431
|
|
@@ -6,6 +6,7 @@ from time import time
|
|
6
6
|
from piccolo.columns.column_types import JSON, JSONB
|
7
7
|
from piccolo.custom_types import QueryResponseType, TableInstance
|
8
8
|
from piccolo.query.mixins import ColumnsDelegate
|
9
|
+
from piccolo.query.operators.json import JSONQueryString
|
9
10
|
from piccolo.querystring import QueryString
|
10
11
|
from piccolo.utils.encoding import load_json
|
11
12
|
from piccolo.utils.objects import make_nested_object
|
@@ -65,16 +66,20 @@ class Query(t.Generic[TableInstance, QueryResponseType]):
|
|
65
66
|
self, "columns_delegate", None
|
66
67
|
)
|
67
68
|
|
69
|
+
json_column_names: t.List[str] = []
|
70
|
+
|
68
71
|
if columns_delegate is not None:
|
69
|
-
json_columns = [
|
70
|
-
|
71
|
-
|
72
|
-
if isinstance(
|
73
|
-
|
72
|
+
json_columns: t.List[t.Union[JSON, JSONB]] = []
|
73
|
+
|
74
|
+
for column in columns_delegate.selected_columns:
|
75
|
+
if isinstance(column, (JSON, JSONB)):
|
76
|
+
json_columns.append(column)
|
77
|
+
elif isinstance(column, JSONQueryString):
|
78
|
+
if alias := column._alias:
|
79
|
+
json_column_names.append(alias)
|
74
80
|
else:
|
75
81
|
json_columns = self.table._meta.json_columns
|
76
82
|
|
77
|
-
json_column_names = []
|
78
83
|
for column in json_columns:
|
79
84
|
if column._alias is not None:
|
80
85
|
json_column_names.append(column._alias)
|
@@ -534,7 +534,7 @@ class Select(Query[TableInstance, t.List[t.Dict[str, t.Any]]]):
|
|
534
534
|
_joins.append(
|
535
535
|
f'LEFT JOIN {right_tablename} "{table_alias}"'
|
536
536
|
" ON "
|
537
|
-
f'({left_tablename}."{key._meta.
|
537
|
+
f'({left_tablename}."{key._meta.db_column_name}" = "{table_alias}"."{pk_name}")' # noqa: E501
|
538
538
|
)
|
539
539
|
|
540
540
|
joins.extend(_joins)
|
@@ -0,0 +1,111 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import typing as t
|
4
|
+
|
5
|
+
from piccolo.querystring import QueryString
|
6
|
+
from piccolo.utils.encoding import dump_json
|
7
|
+
|
8
|
+
if t.TYPE_CHECKING:
|
9
|
+
from piccolo.columns.column_types import JSON
|
10
|
+
|
11
|
+
|
12
|
+
class JSONQueryString(QueryString):
|
13
|
+
|
14
|
+
def clean_value(self, value: t.Any):
|
15
|
+
if not isinstance(value, (str, QueryString)):
|
16
|
+
value = dump_json(value)
|
17
|
+
return value
|
18
|
+
|
19
|
+
def __eq__(self, value) -> QueryString: # type: ignore[override]
|
20
|
+
value = self.clean_value(value)
|
21
|
+
return QueryString("{} = {}", self, value)
|
22
|
+
|
23
|
+
def __ne__(self, value) -> QueryString: # type: ignore[override]
|
24
|
+
value = self.clean_value(value)
|
25
|
+
return QueryString("{} != {}", self, value)
|
26
|
+
|
27
|
+
def eq(self, value) -> QueryString:
|
28
|
+
return self.__eq__(value)
|
29
|
+
|
30
|
+
def ne(self, value) -> QueryString:
|
31
|
+
return self.__ne__(value)
|
32
|
+
|
33
|
+
|
34
|
+
class GetChildElement(JSONQueryString):
|
35
|
+
"""
|
36
|
+
Allows you to get a child element from a JSON object.
|
37
|
+
|
38
|
+
You can access this via the ``arrow`` function on ``JSON`` and ``JSONB``
|
39
|
+
columns.
|
40
|
+
|
41
|
+
"""
|
42
|
+
|
43
|
+
def __init__(
|
44
|
+
self,
|
45
|
+
identifier: t.Union[JSON, QueryString],
|
46
|
+
key: t.Union[str, int, QueryString],
|
47
|
+
alias: t.Optional[str] = None,
|
48
|
+
):
|
49
|
+
if isinstance(key, int):
|
50
|
+
# asyncpg only accepts integer keys if we explicitly mark it as an
|
51
|
+
# int.
|
52
|
+
key = QueryString("{}::int", key)
|
53
|
+
|
54
|
+
super().__init__("{} -> {}", identifier, key, alias=alias)
|
55
|
+
|
56
|
+
def arrow(self, key: t.Union[str, int, QueryString]) -> GetChildElement:
|
57
|
+
"""
|
58
|
+
This allows you to drill multiple levels deep into a JSON object if
|
59
|
+
needed.
|
60
|
+
|
61
|
+
For example::
|
62
|
+
|
63
|
+
>>> await RecordingStudio.select(
|
64
|
+
... RecordingStudio.name,
|
65
|
+
... RecordingStudio.facilities.arrow(
|
66
|
+
... "instruments"
|
67
|
+
... ).arrow(
|
68
|
+
... "drum_kits"
|
69
|
+
... ).as_alias("drum_kits")
|
70
|
+
... ).output(load_json=True)
|
71
|
+
[
|
72
|
+
{'name': 'Abbey Road', 'drum_kits': 2},
|
73
|
+
{'name': 'Electric Lady', 'drum_kits': 3}
|
74
|
+
]
|
75
|
+
|
76
|
+
"""
|
77
|
+
return GetChildElement(identifier=self, key=key, alias=self._alias)
|
78
|
+
|
79
|
+
def __getitem__(
|
80
|
+
self, value: t.Union[str, int, QueryString]
|
81
|
+
) -> GetChildElement:
|
82
|
+
return GetChildElement(identifier=self, key=value, alias=self._alias)
|
83
|
+
|
84
|
+
|
85
|
+
class GetElementFromPath(JSONQueryString):
|
86
|
+
"""
|
87
|
+
Allows you to retrieve an element from a JSON object by specifying a path.
|
88
|
+
It can be several levels deep.
|
89
|
+
|
90
|
+
You can access this via the ``from_path`` function on ``JSON`` and
|
91
|
+
``JSONB`` columns.
|
92
|
+
|
93
|
+
"""
|
94
|
+
|
95
|
+
def __init__(
|
96
|
+
self,
|
97
|
+
identifier: t.Union[JSON, QueryString],
|
98
|
+
path: t.List[t.Union[str, int]],
|
99
|
+
alias: t.Optional[str] = None,
|
100
|
+
):
|
101
|
+
"""
|
102
|
+
:param path:
|
103
|
+
For example: ``["technician", 0, "name"]``.
|
104
|
+
|
105
|
+
"""
|
106
|
+
super().__init__(
|
107
|
+
"{} #> {}",
|
108
|
+
identifier,
|
109
|
+
[str(i) if isinstance(i, int) else i for i in path],
|
110
|
+
alias=alias,
|
111
|
+
)
|
@@ -259,10 +259,22 @@ class QueryString(Selectable):
|
|
259
259
|
# Basic logic
|
260
260
|
|
261
261
|
def __eq__(self, value) -> QueryString: # type: ignore[override]
|
262
|
-
|
262
|
+
if value is None:
|
263
|
+
return QueryString("{} IS NULL", self)
|
264
|
+
else:
|
265
|
+
return QueryString("{} = {}", self, value)
|
263
266
|
|
264
267
|
def __ne__(self, value) -> QueryString: # type: ignore[override]
|
265
|
-
|
268
|
+
if value is None:
|
269
|
+
return QueryString("{} IS NOT NULL", self, value)
|
270
|
+
else:
|
271
|
+
return QueryString("{} != {}", self, value)
|
272
|
+
|
273
|
+
def eq(self, value) -> QueryString:
|
274
|
+
return self.__eq__(value)
|
275
|
+
|
276
|
+
def ne(self, value) -> QueryString:
|
277
|
+
return self.__ne__(value)
|
266
278
|
|
267
279
|
def __add__(self, value) -> QueryString:
|
268
280
|
return QueryString("{} + {}", self, value)
|
@@ -8,6 +8,8 @@ import typing as t
|
|
8
8
|
from dataclasses import dataclass
|
9
9
|
|
10
10
|
from piccolo.apps.schema.commands.generate import get_output_schema
|
11
|
+
from piccolo.engine import engine_finder
|
12
|
+
from piccolo.engine.base import Engine
|
11
13
|
from piccolo.table import Table
|
12
14
|
|
13
15
|
|
@@ -78,9 +80,16 @@ class TableStorage(metaclass=Singleton):
|
|
78
80
|
works with Postgres.
|
79
81
|
"""
|
80
82
|
|
81
|
-
def __init__(self):
|
83
|
+
def __init__(self, engine: t.Optional[Engine] = None):
|
84
|
+
"""
|
85
|
+
:param engine:
|
86
|
+
Which engine to use to make the database queries. If not specified,
|
87
|
+
we try importing an engine from ``piccolo_conf.py``.
|
88
|
+
|
89
|
+
"""
|
90
|
+
self.engine = engine or engine_finder()
|
82
91
|
self.tables = ImmutableDict()
|
83
|
-
self._schema_tables = {}
|
92
|
+
self._schema_tables: t.Dict[str, t.List[str]] = {}
|
84
93
|
|
85
94
|
async def reflect(
|
86
95
|
self,
|
@@ -120,10 +129,13 @@ class TableStorage(metaclass=Singleton):
|
|
120
129
|
exclude_list = self._to_list(exclude)
|
121
130
|
|
122
131
|
if keep_existing:
|
123
|
-
|
132
|
+
exclude_list += self._schema_tables.get(schema_name, [])
|
124
133
|
|
125
134
|
output_schema = await get_output_schema(
|
126
|
-
schema_name=schema_name,
|
135
|
+
schema_name=schema_name,
|
136
|
+
include=include_list,
|
137
|
+
exclude=exclude_list,
|
138
|
+
engine=self.engine,
|
127
139
|
)
|
128
140
|
add_tables = [
|
129
141
|
self._add_table(schema_name=schema_name, table=table)
|
@@ -177,7 +189,7 @@ class TableStorage(metaclass=Singleton):
|
|
177
189
|
|
178
190
|
def _add_to_schema_tables(self, schema_name: str, table_name: str) -> None:
|
179
191
|
"""
|
180
|
-
We keep record of schemas and their tables for easy use. This method
|
192
|
+
We keep a record of schemas and their tables for easy use. This method
|
181
193
|
adds a table to its schema.
|
182
194
|
|
183
195
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: piccolo
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.22.0
|
4
4
|
Summary: A fast, user friendly ORM and query builder which supports asyncio.
|
5
5
|
Home-page: https://github.com/piccolo-orm/piccolo
|
6
6
|
Author: Daniel Townsend
|
@@ -9,44 +9,28 @@ License: MIT
|
|
9
9
|
Project-URL: Documentation, https://piccolo-orm.readthedocs.io/en/latest/index.html
|
10
10
|
Project-URL: Source, https://github.com/piccolo-orm/piccolo
|
11
11
|
Project-URL: Tracker, https://github.com/piccolo-orm/piccolo/issues
|
12
|
+
Platform: UNKNOWN
|
12
13
|
Classifier: License :: OSI Approved :: MIT License
|
13
14
|
Classifier: Programming Language :: Python
|
14
15
|
Classifier: Programming Language :: Python :: 3
|
15
|
-
Classifier: Programming Language :: Python :: 3.8
|
16
16
|
Classifier: Programming Language :: Python :: 3.9
|
17
17
|
Classifier: Programming Language :: Python :: 3.10
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
20
21
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
21
22
|
Classifier: Framework :: AsyncIO
|
22
23
|
Classifier: Typing :: Typed
|
23
24
|
Classifier: Topic :: Database
|
24
|
-
Requires-Python: >=3.
|
25
|
+
Requires-Python: >=3.9.0
|
25
26
|
Description-Content-Type: text/markdown
|
26
|
-
License-File: LICENSE
|
27
|
-
Requires-Dist: black
|
28
|
-
Requires-Dist: colorama>=0.4.0
|
29
|
-
Requires-Dist: Jinja2>=2.11.0
|
30
|
-
Requires-Dist: targ>=0.3.7
|
31
|
-
Requires-Dist: inflection>=0.5.1
|
32
|
-
Requires-Dist: typing-extensions>=4.3.0
|
33
|
-
Requires-Dist: pydantic[email]==2.*
|
34
27
|
Provides-Extra: orjson
|
35
|
-
Requires-Dist: orjson>=3.5.1; extra == "orjson"
|
36
28
|
Provides-Extra: playground
|
37
|
-
Requires-Dist: ipython; extra == "playground"
|
38
29
|
Provides-Extra: postgres
|
39
|
-
Requires-Dist: asyncpg>=0.21.0; extra == "postgres"
|
40
30
|
Provides-Extra: sqlite
|
41
|
-
Requires-Dist: aiosqlite>=0.16.0; extra == "sqlite"
|
42
31
|
Provides-Extra: uvloop
|
43
|
-
Requires-Dist: uvloop>=0.12.0; sys_platform != "win32" and extra == "uvloop"
|
44
32
|
Provides-Extra: all
|
45
|
-
|
46
|
-
Requires-Dist: ipython; extra == "all"
|
47
|
-
Requires-Dist: asyncpg>=0.21.0; extra == "all"
|
48
|
-
Requires-Dist: aiosqlite>=0.16.0; extra == "all"
|
49
|
-
Requires-Dist: uvloop>=0.12.0; sys_platform != "win32" and extra == "all"
|
33
|
+
License-File: LICENSE
|
50
34
|
|
51
35
|

|
52
36
|
|
@@ -155,3 +139,5 @@ We have a handy page which shows the equivalent of [common Django queries in Pic
|
|
155
139
|
Our documentation is on [Read the docs](https://piccolo-orm.readthedocs.io/en/latest/piccolo/getting_started/index.html).
|
156
140
|
|
157
141
|
We also have some great [tutorial videos on YouTube](https://www.youtube.com/channel/UCE7x5nm1Iy9KDfXPNrNQ5lA).
|
142
|
+
|
143
|
+
|
@@ -182,6 +182,8 @@ piccolo/query/methods/refresh.py
|
|
182
182
|
piccolo/query/methods/select.py
|
183
183
|
piccolo/query/methods/table_exists.py
|
184
184
|
piccolo/query/methods/update.py
|
185
|
+
piccolo/query/operators/__init__.py
|
186
|
+
piccolo/query/operators/json.py
|
185
187
|
piccolo/testing/__init__.py
|
186
188
|
piccolo/testing/model_builder.py
|
187
189
|
piccolo/testing/random_builder.py
|
@@ -203,8 +205,6 @@ piccolo/utils/graphlib/__init__.py
|
|
203
205
|
piccolo/utils/graphlib/_graphlib.py
|
204
206
|
profiling/__init__.py
|
205
207
|
profiling/run_profile.py
|
206
|
-
tests/test_main.py
|
207
|
-
tests/test_schema.py
|
208
208
|
tests/apps/__init__.py
|
209
209
|
tests/apps/app/__init__.py
|
210
210
|
tests/apps/app/commands/__init__.py
|
@@ -325,6 +325,8 @@ tests/query/functions/test_type_conversion.py
|
|
325
325
|
tests/query/mixins/__init__.py
|
326
326
|
tests/query/mixins/test_columns_delegate.py
|
327
327
|
tests/query/mixins/test_order_by_delegate.py
|
328
|
+
tests/query/operators/__init__.py
|
329
|
+
tests/query/operators/test_json.py
|
328
330
|
tests/table/__init__.py
|
329
331
|
tests/table/test_all_columns.py
|
330
332
|
tests/table/test_alter.py
|
@@ -9,7 +9,7 @@ pydantic[email]==2.*
|
|
9
9
|
[all]
|
10
10
|
orjson>=3.5.1
|
11
11
|
ipython
|
12
|
-
asyncpg>=0.
|
12
|
+
asyncpg>=0.30.0
|
13
13
|
aiosqlite>=0.16.0
|
14
14
|
|
15
15
|
[all:sys_platform != "win32"]
|
@@ -22,7 +22,7 @@ orjson>=3.5.1
|
|
22
22
|
ipython
|
23
23
|
|
24
24
|
[postgres]
|
25
|
-
asyncpg>=0.
|
25
|
+
asyncpg>=0.30.0
|
26
26
|
|
27
27
|
[sqlite]
|
28
28
|
aiosqlite>=0.16.0
|
@@ -58,7 +58,7 @@ setup(
|
|
58
58
|
long_description_content_type="text/markdown",
|
59
59
|
author="Daniel Townsend",
|
60
60
|
author_email="dan@dantownsend.co.uk",
|
61
|
-
python_requires=">=3.
|
61
|
+
python_requires=">=3.9.0",
|
62
62
|
url="https://github.com/piccolo-orm/piccolo",
|
63
63
|
packages=find_packages(exclude=("tests",)),
|
64
64
|
package_data={
|
@@ -84,11 +84,11 @@ setup(
|
|
84
84
|
"License :: OSI Approved :: MIT License",
|
85
85
|
"Programming Language :: Python",
|
86
86
|
"Programming Language :: Python :: 3",
|
87
|
-
"Programming Language :: Python :: 3.8",
|
88
87
|
"Programming Language :: Python :: 3.9",
|
89
88
|
"Programming Language :: Python :: 3.10",
|
90
89
|
"Programming Language :: Python :: 3.11",
|
91
90
|
"Programming Language :: Python :: 3.12",
|
91
|
+
"Programming Language :: Python :: 3.13",
|
92
92
|
"Programming Language :: Python :: Implementation :: CPython",
|
93
93
|
"Framework :: AsyncIO",
|
94
94
|
"Typing :: Typed",
|