spinta 0.2.dev18__tar.gz → 0.2.dev20__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.
- {spinta-0.2.dev18 → spinta-0.2.dev20}/PKG-INFO +2 -2
- {spinta-0.2.dev18 → spinta-0.2.dev20}/pyproject.toml +2 -2
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/__init__.py +2 -0
- spinta-0.2.dev20/spinta/adapters/rc/__init__.py +1 -0
- spinta-0.2.dev20/spinta/adapters/rc/signature_adapter.py +118 -0
- spinta-0.2.dev20/spinta/adapters/soap_plugins.py +122 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/summary.py +2 -2
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/config.py +13 -7
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/commands/read.py +2 -3
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/components.py +1 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/config.py +1 -1
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/config.yml +3 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/core/access.py +2 -1
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/core/ufuncs.py +5 -1
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +108 -15
- spinta-0.2.dev20/spinta/datasets/backends/dataframe/commands/check.py +33 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +10 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +62 -11
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/commands/link.py +4 -2
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/exceptions.py +5 -3
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/components.py +1 -1
- spinta-0.2.dev20/spinta/manifests/dict/components.py +139 -0
- spinta-0.2.dev20/spinta/manifests/dict/helpers.py +734 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/helpers.py +4 -4
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/sql/helpers.py +8 -2
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/xsd/components.py +1 -1
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/nodes.py +4 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/client.py +2 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/pytest.py +6 -2
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/config.py +9 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/model.py +33 -38
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/querybuilder/ufuncs.py +1 -0
- spinta-0.2.dev18/spinta/manifests/dict/components.py +0 -32
- spinta-0.2.dev18/spinta/manifests/dict/helpers.py +0 -512
- spinta-0.2.dev18/spinta/manifests/xsd/helpers.py +0 -1180
- spinta-0.2.dev18/spinta/manifests/xsd2/commands/configure.py +0 -15
- spinta-0.2.dev18/spinta/manifests/xsd2/commands/load.py +0 -60
- spinta-0.2.dev18/spinta/manifests/xsd2/components.py +0 -9
- spinta-0.2.dev18/spinta/units/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/LICENSE +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/README.rst +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/__main__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/accesslog/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/accesslog/file.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/accesslog/python.py +0 -0
- {spinta-0.2.dev18/spinta/backends/fs → spinta-0.2.dev20/spinta/adapters}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/api/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/api/inspect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/api/schema.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/api/validators.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/asgi.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/auth.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/constants.py +0 -0
- {spinta-0.2.dev18/spinta/backends/fs/commands → spinta-0.2.dev20/spinta/backends/fs}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/backends/memory → spinta-0.2.dev20/spinta/backends/fs/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/changes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/decode.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/encode.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/validate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/wait.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/wipe.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/commands/write.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/fs/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/backends/memory/commands → spinta-0.2.dev20/spinta/backends/memory}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/backends/mongo → spinta-0.2.dev20/spinta/backends/memory/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/auth.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/changes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/encode.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/wait.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/wipe.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/commands/write.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/memory/components.py +0 -0
- {spinta-0.2.dev18/spinta/backends/mongo/commands → spinta-0.2.dev20/spinta/backends/mongo}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/backends/mongo/types → spinta-0.2.dev20/spinta/backends/mongo/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/changes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/encode.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/freeze.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/validate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/wait.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/wipe.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/commands/write.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/backends/mongo/types/array → spinta-0.2.dev20/spinta/backends/mongo/types}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/backends/mongo/types/file → spinta-0.2.dev20/spinta/backends/mongo/types/array}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/types/array/write.py +0 -0
- {spinta-0.2.dev18/spinta/backends/mongo/types/object → spinta-0.2.dev20/spinta/backends/mongo/types/file}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/types/file/write.py +0 -0
- {spinta-0.2.dev18/spinta/backends/mongo/ufuncs → spinta-0.2.dev20/spinta/backends/mongo/types/object}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/types/object/write.py +0 -0
- {spinta-0.2.dev18/spinta/backends/nobackend → spinta-0.2.dev20/spinta/backends/mongo/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/ufuncs/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/mongo/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/backends/nobackend/commands → spinta-0.2.dev20/spinta/backends/nobackend}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql → spinta-0.2.dev20/spinta/backends/nobackend/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/commands/changes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/commands/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/commands/wait.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/commands/wipe.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/commands/write.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/nobackend/components.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/commands → spinta-0.2.dev20/spinta/backends/postgresql}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/commands/migrate → spinta-0.2.dev20/spinta/backends/postgresql/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/changes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/column.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/encode.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/freeze.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/link.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/manifest.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/commands/migrate/types → spinta-0.2.dev20/spinta/backends/postgresql/commands/migrate}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/constants.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/model.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/helpers/migrate → spinta-0.2.dev20/spinta/backends/postgresql/commands/migrate/types}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/types/array.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/types/datatype.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/types/file.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/types/object.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/types/ref.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/types/string.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/migrate/types/text.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/redirect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/validate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/wait.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/wipe.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/commands/write.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/constants.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/files.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/changes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/extractors.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/manifest.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types → spinta-0.2.dev20/spinta/backends/postgresql/helpers/migrate}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/migrate/actions.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/migrate/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/name.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/redirect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/type.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/helpers/validate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/sqlalchemy.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/array → spinta-0.2.dev20/spinta/backends/postgresql/types}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/array_backref → spinta-0.2.dev20/spinta/backends/postgresql/types/array}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/array/freeze.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/array/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/array/wipe.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/array/write.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/backref → spinta-0.2.dev20/spinta/backends/postgresql/types/array_backref}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/denorm → spinta-0.2.dev20/spinta/backends/postgresql/types/backref}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/backref/init.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/external_ref → spinta-0.2.dev20/spinta/backends/postgresql/types/denorm}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/denorm/init.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/file → spinta-0.2.dev20/spinta/backends/postgresql/types/external_ref}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/geometry → spinta-0.2.dev20/spinta/backends/postgresql/types/file}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/file/freeze.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/file/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/file/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/file/write.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/object → spinta-0.2.dev20/spinta/backends/postgresql/types/geometry}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/geometry/encode.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/geometry/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/geometry/write.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/ref → spinta-0.2.dev20/spinta/backends/postgresql/types/object}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/object/freeze.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/object/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/object/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/object/wipe.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/types/text → spinta-0.2.dev20/spinta/backends/postgresql/types/ref}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/ref/freeze.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/ref/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/ref/validate.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/ufuncs → spinta-0.2.dev20/spinta/backends/postgresql/types/text}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/types/text/init.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/ufuncs/query → spinta-0.2.dev20/spinta/backends/postgresql/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/ufuncs/components.py +0 -0
- {spinta-0.2.dev18/spinta/backends/postgresql/ufuncs/result → spinta-0.2.dev20/spinta/backends/postgresql/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/backends/types → spinta-0.2.dev20/spinta/backends/postgresql/ufuncs/result}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers → spinta-0.2.dev20/spinta/backends/types}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/admin.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/auth.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/data.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/get.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/admin → spinta-0.2.dev20/spinta/cli/helpers}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/admin/scripts → spinta-0.2.dev20/spinta/cli/helpers/admin}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/admin/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/admin/registry.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/export → spinta-0.2.dev20/spinta/cli/helpers/admin/scripts}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/admin/scripts/changelog.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/admin/scripts/deduplicate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/auth.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/data.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/errors.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/export/backends → spinta-0.2.dev20/spinta/cli/helpers/export}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/export/backends/postgresql → spinta-0.2.dev20/spinta/cli/helpers/export/backends}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/script → spinta-0.2.dev20/spinta/cli/helpers/export/backends/postgresql}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/export/backends/postgresql/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/export/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/export/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/export/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/message.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/delete.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/error.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/state.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/sync.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/utils.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/push/write.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/sync/controllers → spinta-0.2.dev20/spinta/cli/helpers/script}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/script/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/script/core.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/script/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/script/registry.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/store.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/api_helpers.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/upgrade → spinta-0.2.dev20/spinta/cli/helpers/sync/controllers}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/controllers/data_service.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/controllers/dataset.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/controllers/distribution.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/controllers/synchronization/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/controllers/synchronization/connection.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/controllers/synchronization/manifest_catalog_to_agent.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/enum.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/sync/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/typer.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/upgrade/scripts → spinta-0.2.dev20/spinta/cli/helpers/upgrade}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/registry.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/upgrade/scripts/backends → spinta-0.2.dev20/spinta/cli/helpers/upgrade/scripts}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/upgrade/scripts/backends/postgresql → spinta-0.2.dev20/spinta/cli/helpers/upgrade/scripts/backends}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/upgrade/scripts/keymaps → spinta-0.2.dev20/spinta/cli/helpers/upgrade/scripts/backends/postgresql}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/comments.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
- {spinta-0.2.dev18/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy → spinta-0.2.dev20/spinta/cli/helpers/upgrade/scripts/keymaps}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/core → spinta-0.2.dev20/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/helpers/upgrade/scripts/redirect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/inspect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/keymap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/main.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/pii.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/pull.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/push.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/server.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/show.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/sync.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/cli/upgrade.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/client.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/commands/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/commands/auth.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/commands/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/commands/search.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/commands/version.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/commands/write.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/compat.py +0 -0
- {spinta-0.2.dev18/spinta/datasets → spinta-0.2.dev20/spinta/core}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/core/config.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/core/context.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/core/enums.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends → spinta-0.2.dev20/spinta/datasets}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe → spinta-0.2.dev20/spinta/datasets/backends}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends → spinta-0.2.dev20/spinta/datasets/backends/dataframe}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/csv → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/csv/commands → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/csv}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/json → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/csv/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/csv/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/json/commands → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/json}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/memory → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/json/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/json/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/soap → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/memory}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/soap/commands → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/soap}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/soap/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/soap/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/soap/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/xml → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/soap/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/backends/xml/commands → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/xml}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe → spinta-0.2.dev20/spinta/datasets/backends/dataframe/backends/xml}/commands/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/dataframe/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/dataframe/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/dataframe/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/notimpl → spinta-0.2.dev20/spinta/datasets/backends/dataframe/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/notimpl/commands → spinta-0.2.dev20/spinta/datasets/backends/notimpl}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql → spinta-0.2.dev20/spinta/datasets/backends/notimpl/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/notimpl/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends → spinta-0.2.dev20/spinta/datasets/backends/sql}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mariadb → spinta-0.2.dev20/spinta/datasets/backends/sql/backends}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mariadb/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mariadb}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mariadb/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mssql → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mssql/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mssql}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mssql/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mssql/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mysql → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mssql/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mysql/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mysql}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/mysql/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mysql/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/oracle → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/mysql/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/oracle/types → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/oracle}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/oracle/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/oracle/types/geometry → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/oracle/types}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/oracle/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/oracle/types/geometry}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/oracle/types/geometry/encode.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/oracle/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/oracle/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/postgresql → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/oracle/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/postgresql/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/postgresql}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/postgresql/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/sas/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/base.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/commands/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/commands/cast.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/constants.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/dialect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/formats.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/identifier.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/introspection.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/log4j.properties +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/types.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/sas/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/sas/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/sqlite → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/sas/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/sqlite/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/sqlite}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/sqlite/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/commands → spinta-0.2.dev20/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sql/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/commands/cast.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/commands/column.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/commands/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/commands/wait.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/ufuncs/query → spinta-0.2.dev20/spinta/datasets/backends/sql/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sql/ufuncs/result → spinta-0.2.dev20/spinta/datasets/backends/sql/ufuncs/query}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sqldump → spinta-0.2.dev20/spinta/datasets/backends/sql/ufuncs/result}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sqldump/commands → spinta-0.2.dev20/spinta/datasets/backends/sqldump}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/sqldump/ufuncs → spinta-0.2.dev20/spinta/datasets/backends/sqldump/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sqldump/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/wsdl → spinta-0.2.dev20/spinta/datasets/backends/sqldump/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/backends/wsdl/commads → spinta-0.2.dev20/spinta/datasets/backends/wsdl}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/commands → spinta-0.2.dev20/spinta/datasets/backends/wsdl/commads}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/backends/wsdl/components.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/inspect → spinta-0.2.dev20/spinta/datasets/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/commands/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/commands/error.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/commands/inspect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/commands/wipe.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/enums.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/inspect/commands → spinta-0.2.dev20/spinta/datasets/inspect}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/datasets/keymaps → spinta-0.2.dev20/spinta/datasets/inspect/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/inspect/commands/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/inspect/commands/merge.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/inspect/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/inspect/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/dimensions → spinta-0.2.dev20/spinta/datasets/keymaps}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/keymaps/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/keymaps/redis.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/keymaps/sync.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/datasets/utils.py +0 -0
- {spinta-0.2.dev18/spinta/dimensions/comments → spinta-0.2.dev20/spinta/dimensions}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/dimensions/enum → spinta-0.2.dev20/spinta/dimensions/comments}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/comments/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/comments/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/dimensions/lang → spinta-0.2.dev20/spinta/dimensions/enum}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/enum/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/enum/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/enum/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/enum/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/dimensions/param → spinta-0.2.dev20/spinta/dimensions/lang}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/lang/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/lang/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/dimensions/prefix → spinta-0.2.dev20/spinta/dimensions/param}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/param/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/param/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/param/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/dimensions/prefix/commands → spinta-0.2.dev20/spinta/dimensions/prefix}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/formats → spinta-0.2.dev20/spinta/dimensions/prefix/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/prefix/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/prefix/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dimensions/prefix/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/dispatcher.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/fetcher.py +0 -0
- {spinta-0.2.dev18/spinta/formats/ascii → spinta-0.2.dev20/spinta/formats}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/formats/csv → spinta-0.2.dev20/spinta/formats/ascii}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/ascii/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/ascii/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/ascii/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/components.py +0 -0
- {spinta-0.2.dev18/spinta/formats/html → spinta-0.2.dev20/spinta/formats/csv}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/csv/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/csv/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/formats/json → spinta-0.2.dev20/spinta/formats/html}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/html/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/html/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/html/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/formats/jsonlines → spinta-0.2.dev20/spinta/formats/json}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/json/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/json/components.py +0 -0
- {spinta-0.2.dev18/spinta/formats/xlsx → spinta-0.2.dev20/spinta/formats/jsonlines}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/jsonlines/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/jsonlines/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/rdf/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/rdf/components.py +0 -0
- {spinta-0.2.dev18/spinta/hacks → spinta-0.2.dev20/spinta/formats/xlsx}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/xlsx/commands.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/formats/xlsx/components.py +0 -0
- {spinta-0.2.dev18/spinta/manifests → spinta-0.2.dev20/spinta/hacks}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/hacks/spyna.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/hacks/urlparams.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/handlers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/logging_config.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifest/_ns.yml +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifest/_schema/version.yml +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifest/_schema.yml +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifest/_txn.yml +0 -0
- {spinta-0.2.dev18/spinta/manifests/backend → spinta-0.2.dev20/spinta/manifests}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/backend/commands → spinta-0.2.dev20/spinta/manifests/backend}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests → spinta-0.2.dev20/spinta/manifests/backend}/commands/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/commands/freeze.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/commands/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/commands/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/commands/sync.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/backend/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/dict → spinta-0.2.dev20/spinta/manifests/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/auth.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/error.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/init.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/inspect.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/link.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/commands/read.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/dict/commands → spinta-0.2.dev20/spinta/manifests/dict}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/internal → spinta-0.2.dev20/spinta/manifests/dict/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/dict/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/dict/commands/load.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/internal/commands → spinta-0.2.dev20/spinta/manifests/internal}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/internal_sql → spinta-0.2.dev20/spinta/manifests/internal/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal/components.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/internal_sql/commands → spinta-0.2.dev20/spinta/manifests/internal_sql}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/memory → spinta-0.2.dev20/spinta/manifests/internal_sql/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/commands/auth.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/commands/backend.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/commands/read.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/internal_sql/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/memory/commands → spinta-0.2.dev20/spinta/manifests/memory}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/mermaid → spinta-0.2.dev20/spinta/manifests/memory/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/memory/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/memory/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/memory/components.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/open_api → spinta-0.2.dev20/spinta/manifests/mermaid}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/mermaid/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/mermaid/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/open_api/commands → spinta-0.2.dev20/spinta/manifests/open_api}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/sql → spinta-0.2.dev20/spinta/manifests/open_api/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/open_api/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/open_api/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/open_api/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/open_api/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/open_api/openapi_config.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/open_api/openapi_generator.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/rdf/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/rdf/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/rdf/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/rdf/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/sql/commands → spinta-0.2.dev20/spinta/manifests/sql}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/tabular → spinta-0.2.dev20/spinta/manifests/sql/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/sql/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/sql/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/sql/components.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/tabular/commands → spinta-0.2.dev20/spinta/manifests/tabular}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/tabular/formats → spinta-0.2.dev20/spinta/manifests/tabular/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/tabular/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/tabular/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/tabular/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/tabular/constants.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/xsd → spinta-0.2.dev20/spinta/manifests/tabular/formats}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/tabular/formats/gsheets.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/tabular/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/xsd/commands → spinta-0.2.dev20/spinta/manifests/xsd}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/xsd2 → spinta-0.2.dev20/spinta/manifests/xsd/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/xsd/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/xsd/commands/load.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/xsd2 → spinta-0.2.dev20/spinta/manifests/xsd}/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/xsd2/commands → spinta-0.2.dev20/spinta/manifests/yaml}/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/yaml → spinta-0.2.dev20/spinta/manifests/yaml/commands}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/commands/configure.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/commands/freeze.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/commands/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/commands/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/commands/migrate.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/commands/sync.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/manifests/yaml/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/methods.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/middlewares.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/migrations/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/manifests/yaml/commands → spinta-0.2.dev20/spinta/migrations/schema}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/migrations/schema/alembic.py +0 -0
- {spinta-0.2.dev18/spinta/migrations/schema → spinta-0.2.dev20/spinta/naming}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/naming/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/naming/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/naming/ufuncts.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/renderer.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/spyna.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/templates/base.html +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/templates/data.html +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/templates/error.html +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/templates/form.html +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/cli.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/config.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/context.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/csv.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/data.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/datasets.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/dtypes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/manifest.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/migration.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/push.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/request.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/tabular.py +0 -0
- {spinta-0.2.dev18/spinta/naming → spinta-0.2.dev20/spinta/testing/types}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/types/geometry.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/ufuncs.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/testing/utils.py +0 -0
- {spinta-0.2.dev18/spinta/testing → spinta-0.2.dev20/spinta}/types/__init__.py +0 -0
- {spinta-0.2.dev18/spinta/types → spinta-0.2.dev20/spinta/types/array}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/array/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/array/link.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/array/resolve.py +0 -0
- {spinta-0.2.dev18/spinta/types/array → spinta-0.2.dev20/spinta/types/backref}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/backref/link.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/command.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/datatype.py +0 -0
- {spinta-0.2.dev18/spinta/types/backref → spinta-0.2.dev20/spinta/types/denorm}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/denorm/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/denorm/link.py +0 -0
- {spinta-0.2.dev18/spinta/types/denorm → spinta-0.2.dev20/spinta/types/file}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/file/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/file/decode.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/file/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/types/file → spinta-0.2.dev20/spinta/types/geometry}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/geometry/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/geometry/constants.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/geometry/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/geometry/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/types/geometry → spinta-0.2.dev20/spinta/types/inherit}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/inherit/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/namespace.py +0 -0
- {spinta-0.2.dev18/spinta/types/inherit → spinta-0.2.dev20/spinta/types/object}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/object/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/object/link.py +0 -0
- {spinta-0.2.dev18/spinta/types/object → spinta-0.2.dev20/spinta/types/partial}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/partial/link.py +0 -0
- {spinta-0.2.dev18/spinta/types/partial → spinta-0.2.dev20/spinta/types/ref}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/ref/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/ref/link.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/ref/resolve.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/store.py +0 -0
- {spinta-0.2.dev18/spinta/types/ref → spinta-0.2.dev20/spinta/types/text}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/text/check.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/text/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/text/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/types/text/load.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/typing.py +0 -0
- {spinta-0.2.dev18/spinta/types/text → spinta-0.2.dev20/spinta/ufuncs}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/binds.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs → spinta-0.2.dev20/spinta/ufuncs/changebase}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/changebase/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/changebase/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/changebase/ufuncs.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/common.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs/changebase → spinta-0.2.dev20/spinta/ufuncs/linkbuilder}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/linkbuilder/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/linkbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs/linkbuilder → spinta-0.2.dev20/spinta/ufuncs/loadbuilder}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/loadbuilder/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/loadbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs/loadbuilder → spinta-0.2.dev20/spinta/ufuncs/propertyresolver}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/propertyresolver/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs/propertyresolver → spinta-0.2.dev20/spinta/ufuncs/querybuilder}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/querybuilder/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/querybuilder/helpers.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs/querybuilder → spinta-0.2.dev20/spinta/ufuncs/requestparamsbuilder}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs/requestparamsbuilder → spinta-0.2.dev20/spinta/ufuncs/resultbuilder}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/resultbuilder/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/resultbuilder/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs/resultbuilder → spinta-0.2.dev20/spinta/ufuncs/summaryenv}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/summaryenv/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
- {spinta-0.2.dev18/spinta/ufuncs/summaryenv → spinta-0.2.dev20/spinta/units}/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/units/components.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/units/helpers.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/urlparams.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/__init__.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/aiotools.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/changes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/collections.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/config.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/data.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/encoding.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/enums.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/errors.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/functools.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/idgen.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/imports.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/itertools.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/json.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/naming.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/nestedstruct.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/nin.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/passwords.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/path.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/refs.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/response.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/schema.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/scopes.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/sqlalchemy.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/sqlite.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/starlette.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/streams.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/tree.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/types.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/units.py +0 -0
- {spinta-0.2.dev18 → spinta-0.2.dev20}/spinta/utils/url.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spinta
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.dev20
|
|
4
4
|
Summary: A platform for describing, extracting, transforming, loading and serving open data.
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -70,7 +70,7 @@ Requires-Dist: sqlalchemy (>=1.4,<1.5)
|
|
|
70
70
|
Requires-Dist: sqlalchemy-utils (<=0.41.2)
|
|
71
71
|
Requires-Dist: sqlean-py (<=3.49.1)
|
|
72
72
|
Requires-Dist: sqlparse
|
|
73
|
-
Requires-Dist: starlette (>=0.
|
|
73
|
+
Requires-Dist: starlette (>=0.52.1,<1.0.0)
|
|
74
74
|
Requires-Dist: tabulate
|
|
75
75
|
Requires-Dist: toposort
|
|
76
76
|
Requires-Dist: tqdm
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "spinta"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.2dev20"
|
|
4
4
|
description = "A platform for describing, extracting, transforming, loading and serving open data."
|
|
5
5
|
authors = ["Mantas Zimnickas <sirexas@gmail.com>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -55,7 +55,7 @@ requests = "*"
|
|
|
55
55
|
setuptools = "*"
|
|
56
56
|
setuptools-scm = "*"
|
|
57
57
|
# https://github.com/encode/starlette/security/advisories/GHSA-f96h-pmfr-66vw
|
|
58
|
-
starlette = ">=0.
|
|
58
|
+
starlette = ">=0.52.1,<1.0.0"
|
|
59
59
|
pydantic = "*"
|
|
60
60
|
toposort = "*"
|
|
61
61
|
tqdm = "*"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Organization-specific SOAP helpers (e.g. RC broker request signing)."""
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import base64
|
|
2
|
+
import subprocess
|
|
3
|
+
|
|
4
|
+
from lxml import etree
|
|
5
|
+
|
|
6
|
+
from spinta.components import Context
|
|
7
|
+
from spinta.core.config import RawConfig
|
|
8
|
+
from spinta.core.ufuncs import Expr
|
|
9
|
+
from spinta.datasets.backends.dataframe.backends.soap.ufuncs.components import SoapQueryBuilder
|
|
10
|
+
from spinta.datasets.backends.dataframe.backends.soap.ufuncs.ufuncs import MakeCDATA
|
|
11
|
+
|
|
12
|
+
RC_ACTION_TYPE_FIELD = "ActionType"
|
|
13
|
+
RC_CALLER_CODE_FIELD = "CallerCode"
|
|
14
|
+
RC_END_USER_INFO_FIELD = "EndUserInfo"
|
|
15
|
+
RC_PARAMETERS_FIELD = "Parameters"
|
|
16
|
+
RC_TIME_FIELD = "Time"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def is_quoted(value: str) -> bool:
|
|
20
|
+
"""True if ``value`` has matching outer ``'`` or ``"`` quotes (Katalogas ``is_quoted``)."""
|
|
21
|
+
return len(value) > 1 and value[0] == value[-1] and value[0] in ('"', "'")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _require_rc_private_key_path(raw_config: RawConfig | None) -> str:
|
|
25
|
+
"""Return the configured PEM path, or raise if raw config / key path is missing."""
|
|
26
|
+
if raw_config is None:
|
|
27
|
+
raise RuntimeError("RC signature adapter was loaded but application configuration is missing.")
|
|
28
|
+
path = raw_config.get("rc_signature", "private_key_path", default=None)
|
|
29
|
+
if not path or not str(path).strip():
|
|
30
|
+
raise RuntimeError(
|
|
31
|
+
"When using the RC signature SOAP adapter, set `rc_signature.private_key_path` in configuration."
|
|
32
|
+
)
|
|
33
|
+
return str(path)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def validate_soap_adapter_config(raw_config: RawConfig | None) -> None:
|
|
37
|
+
"""Invoked by soap plugin loader when this module is listed in ``soap_adapter_modules``."""
|
|
38
|
+
_require_rc_private_key_path(raw_config)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _get_private_key_path(context: Context) -> str:
|
|
42
|
+
return _require_rc_private_key_path(context.get("rc"))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _compute_rc_signature(args: str, key_path: str) -> str:
|
|
46
|
+
"""Compute RC-style signature using openssl CLI.
|
|
47
|
+
This mirrors the legacy shell example:
|
|
48
|
+
echo -n "$ARGS" | openssl dgst -sha256 -sign $PRIVATE_KEY_FILE | base64 -w0
|
|
49
|
+
"""
|
|
50
|
+
proc = subprocess.run(
|
|
51
|
+
["openssl", "dgst", "-sha256", "-sign", key_path],
|
|
52
|
+
input=args.encode("utf-8"),
|
|
53
|
+
stdout=subprocess.PIPE,
|
|
54
|
+
stderr=subprocess.PIPE,
|
|
55
|
+
check=True,
|
|
56
|
+
)
|
|
57
|
+
sig_b64 = base64.b64encode(proc.stdout).decode("ascii")
|
|
58
|
+
|
|
59
|
+
return sig_b64.replace("\r", "").replace("\n", "")
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def build_rc_string_to_sign(soap_body: dict[str, object]) -> str:
|
|
63
|
+
"""Return the plaintext that RC signs and verifies for SOAP calls.
|
|
64
|
+
|
|
65
|
+
The broker does not sign the whole XML; it expects an RSA-SHA256 signature over one
|
|
66
|
+
concatenated string, in this exact order with no delimiters: ActionType, CallerCode,
|
|
67
|
+
EndUserInfo, Parameters, Time. The server rebuilds the same string and checks the
|
|
68
|
+
signature, so we must assemble identical pieces from `soap_body`.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
input_block = soap_body.get("input")
|
|
72
|
+
input_dict = input_block if isinstance(input_block, dict) else None
|
|
73
|
+
|
|
74
|
+
def _get(name: str, default: str = "") -> str:
|
|
75
|
+
value = soap_body.get(f"input/{name}")
|
|
76
|
+
if value is None and input_dict is not None:
|
|
77
|
+
value = input_dict.get(name)
|
|
78
|
+
|
|
79
|
+
if value is None:
|
|
80
|
+
value = soap_body.get(name, default)
|
|
81
|
+
|
|
82
|
+
if isinstance(value, MakeCDATA):
|
|
83
|
+
value = value.data
|
|
84
|
+
|
|
85
|
+
if isinstance(value, etree.CDATA):
|
|
86
|
+
value = str(value)
|
|
87
|
+
|
|
88
|
+
if name == RC_PARAMETERS_FIELD and isinstance(value, str) and is_quoted(value):
|
|
89
|
+
value = value[1:-1]
|
|
90
|
+
|
|
91
|
+
return "" if value is None else str(value)
|
|
92
|
+
|
|
93
|
+
action_type = _get(RC_ACTION_TYPE_FIELD)
|
|
94
|
+
caller_code = _get(RC_CALLER_CODE_FIELD)
|
|
95
|
+
end_user_info = _get(RC_END_USER_INFO_FIELD, "")
|
|
96
|
+
parameters = _get(RC_PARAMETERS_FIELD, "")
|
|
97
|
+
time_value = _get(RC_TIME_FIELD)
|
|
98
|
+
|
|
99
|
+
return f"{action_type}{caller_code}{end_user_info}{parameters}{time_value}"
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def compute_rc_signature_from_body(soap_body: dict[str, object], context: Context) -> str:
|
|
103
|
+
"""Build string-to-sign from soap_body and return base64 signature."""
|
|
104
|
+
key_path = _get_private_key_path(context)
|
|
105
|
+
args = build_rc_string_to_sign(soap_body)
|
|
106
|
+
|
|
107
|
+
return _compute_rc_signature(args, key_path)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def get_deferred_prepare_names() -> list[str]:
|
|
111
|
+
return ["rc_signature"]
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def get_body_resolvers() -> dict[str, object]:
|
|
115
|
+
def rc_signature_resolver(env: SoapQueryBuilder, expr: Expr | None = None) -> str:
|
|
116
|
+
return compute_rc_signature_from_body(env.soap_request_body, env.context)
|
|
117
|
+
|
|
118
|
+
return {"rc_signature": rc_signature_resolver}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"""Load optional SOAP adapter modules from ``soap_adapter_modules`` paths in config."""
|
|
2
|
+
|
|
3
|
+
import importlib.util
|
|
4
|
+
import logging
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from types import ModuleType
|
|
7
|
+
from typing import Any, Callable
|
|
8
|
+
|
|
9
|
+
from spinta.core.ufuncs import Expr, UFuncRegistry
|
|
10
|
+
from spinta.core.config import RawConfig
|
|
11
|
+
from spinta.ufuncs.loadbuilder.components import LoadBuilder
|
|
12
|
+
from spinta.datasets.backends.dataframe.backends.soap.ufuncs.components import SoapQueryBuilder
|
|
13
|
+
|
|
14
|
+
log = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
_deferred_prepare_names_cache: set[str] | None = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def get_deferred_prepare_names() -> set[str]:
|
|
21
|
+
"""Names of prepare ufuncs left unresolved until the SOAP body is built (empty before register)."""
|
|
22
|
+
return _deferred_prepare_names_cache or set()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _load_adapter_module_from_path(file_path: str, raw_config: RawConfig | None = None) -> ModuleType | None:
|
|
26
|
+
try:
|
|
27
|
+
path = Path(file_path)
|
|
28
|
+
if not path.exists():
|
|
29
|
+
log.warning("SOAP adapter module not found: %s", file_path)
|
|
30
|
+
return None
|
|
31
|
+
spec = importlib.util.spec_from_file_location(path.stem, path)
|
|
32
|
+
if spec is None or spec.loader is None:
|
|
33
|
+
log.warning("Failed to create module spec for: %s", file_path)
|
|
34
|
+
return None
|
|
35
|
+
module = importlib.util.module_from_spec(spec)
|
|
36
|
+
spec.loader.exec_module(module)
|
|
37
|
+
log.info("Loaded SOAP adapter module from: %s", file_path)
|
|
38
|
+
if hasattr(module, "validate_soap_adapter_config"):
|
|
39
|
+
module.validate_soap_adapter_config(raw_config)
|
|
40
|
+
return module
|
|
41
|
+
except Exception as e:
|
|
42
|
+
log.warning("Failed to load SOAP adapter module %s: %s", file_path, e)
|
|
43
|
+
return None
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _load_adapters_from_config(raw_config: RawConfig | None) -> tuple[set[str], dict[str, Callable[..., Any]]]:
|
|
47
|
+
deferred: set[str] = set()
|
|
48
|
+
body_resolvers: dict[str, Callable[..., Any]] = {}
|
|
49
|
+
|
|
50
|
+
if raw_config is None:
|
|
51
|
+
return deferred, body_resolvers
|
|
52
|
+
|
|
53
|
+
module_paths = raw_config.get("soap_adapter_modules", default=[])
|
|
54
|
+
if not module_paths:
|
|
55
|
+
return deferred, body_resolvers
|
|
56
|
+
|
|
57
|
+
if isinstance(module_paths, str):
|
|
58
|
+
module_paths = [module_paths]
|
|
59
|
+
|
|
60
|
+
for module_path in module_paths:
|
|
61
|
+
module = _load_adapter_module_from_path(module_path, raw_config)
|
|
62
|
+
if module is None:
|
|
63
|
+
continue
|
|
64
|
+
|
|
65
|
+
if hasattr(module, "get_deferred_prepare_names"):
|
|
66
|
+
try:
|
|
67
|
+
result = module.get_deferred_prepare_names()
|
|
68
|
+
except Exception as e:
|
|
69
|
+
log.warning("Failed to call get_deferred_prepare_names in %s: %s", module_path, e)
|
|
70
|
+
else:
|
|
71
|
+
if isinstance(result, (list, tuple)):
|
|
72
|
+
deferred.update(result)
|
|
73
|
+
else:
|
|
74
|
+
deferred.add(str(result))
|
|
75
|
+
|
|
76
|
+
if hasattr(module, "get_body_resolvers"):
|
|
77
|
+
try:
|
|
78
|
+
result = module.get_body_resolvers()
|
|
79
|
+
except Exception as e:
|
|
80
|
+
log.warning("Failed to call get_body_resolvers in %s: %s", module_path, e)
|
|
81
|
+
else:
|
|
82
|
+
if isinstance(result, dict):
|
|
83
|
+
body_resolvers.update(result)
|
|
84
|
+
|
|
85
|
+
return deferred, body_resolvers
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def _deferred_prepare_resolver(env, expr: Expr) -> Expr:
|
|
89
|
+
env.param.soap_body = {env.this: expr}
|
|
90
|
+
return expr
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def _make_body_resolver(callable_fn: Callable[..., Any]) -> Callable[[SoapQueryBuilder, Expr], Any]:
|
|
94
|
+
"""Adapter may implement ``fn(env)`` only; fall back if ``fn(env, expr)`` raises ``TypeError``."""
|
|
95
|
+
|
|
96
|
+
def body_resolver(env: SoapQueryBuilder, expr: Expr) -> Any:
|
|
97
|
+
try:
|
|
98
|
+
return callable_fn(env, expr)
|
|
99
|
+
except TypeError:
|
|
100
|
+
return callable_fn(env)
|
|
101
|
+
|
|
102
|
+
return body_resolver
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def register_soap_ufuncs(registry: UFuncRegistry, raw_config: RawConfig | None = None) -> None:
|
|
106
|
+
"""Register SOAP adapter resolvers from config (`soap_adapter_modules`).
|
|
107
|
+
Adapters are loaded from local Python files listed in:
|
|
108
|
+
soap_adapter_modules:
|
|
109
|
+
- /path/to/adapter.py
|
|
110
|
+
Call this after resolver.collect().
|
|
111
|
+
"""
|
|
112
|
+
global _deferred_prepare_names_cache
|
|
113
|
+
|
|
114
|
+
deferred, body_resolvers = _load_adapters_from_config(raw_config)
|
|
115
|
+
|
|
116
|
+
_deferred_prepare_names_cache = deferred
|
|
117
|
+
|
|
118
|
+
for name in deferred:
|
|
119
|
+
registry.register(name, _deferred_prepare_resolver, (LoadBuilder, Expr))
|
|
120
|
+
|
|
121
|
+
for name, callable_fn in body_resolvers.items():
|
|
122
|
+
registry.register(name, _make_body_resolver(callable_fn), (SoapQueryBuilder, Expr))
|
|
@@ -6,7 +6,7 @@ from spinta.backends.helpers import get_table_name
|
|
|
6
6
|
from spinta.backends.postgresql.helpers.name import get_pg_table_name, get_pg_column_name
|
|
7
7
|
from spinta.core.ufuncs import Expr
|
|
8
8
|
from spinta.types.datatype import Integer, Number, Boolean, String, Date, DateTime, Time, Ref
|
|
9
|
-
from spinta import commands
|
|
9
|
+
from spinta import commands, HTTP_URL_PREFIXES
|
|
10
10
|
from spinta.components import Context, Property
|
|
11
11
|
from spinta.components import Model
|
|
12
12
|
from spinta.exceptions import NotFoundError, NotImplementedFeature, InvalidRequestQuery
|
|
@@ -322,7 +322,7 @@ def summary(context: Context, dtype: Ref, backend: PostgreSQL, **kwargs):
|
|
|
322
322
|
prefixes = dtype.model.external.dataset.prefixes
|
|
323
323
|
label = None
|
|
324
324
|
if uri and ":" in uri:
|
|
325
|
-
if uri.startswith(
|
|
325
|
+
if uri.startswith(HTTP_URL_PREFIXES):
|
|
326
326
|
label = uri
|
|
327
327
|
else:
|
|
328
328
|
split = uri.split(":")
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
from typing import List
|
|
2
|
-
from typing import Optional
|
|
1
|
+
from typing import List, Optional
|
|
3
2
|
|
|
4
|
-
from typer import Argument
|
|
3
|
+
from typer import Argument, Option, echo
|
|
5
4
|
from typer import Context as TyperContext
|
|
6
|
-
from typer import Option
|
|
7
|
-
from typer import echo
|
|
8
5
|
|
|
6
|
+
from spinta import commands
|
|
9
7
|
from spinta.cli.helpers.manifest import convert_str_to_manifest_path
|
|
10
8
|
from spinta.cli.helpers.store import prepare_manifest
|
|
11
|
-
from spinta.
|
|
9
|
+
from spinta.components import Context, Store
|
|
12
10
|
from spinta.core.config import KeyFormat
|
|
13
11
|
from spinta.core.context import configure_context
|
|
12
|
+
from spinta.core.enums import Mode
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
def config(
|
|
@@ -32,9 +31,16 @@ def check(
|
|
|
32
31
|
):
|
|
33
32
|
"""Check configuration and manifests"""
|
|
34
33
|
manifests = convert_str_to_manifest_path(manifests)
|
|
35
|
-
context = configure_context(ctx.obj, manifests, mode=mode, check_names=check_names)
|
|
34
|
+
context: Context = configure_context(ctx.obj, manifests, mode=mode, check_names=check_names)
|
|
36
35
|
prepare_manifest(context, ensure_config_dir=True, full_load=True)
|
|
37
36
|
manager = context.get("error_manager")
|
|
37
|
+
|
|
38
|
+
store: Store = context.get("store")
|
|
39
|
+
if store.manifest:
|
|
40
|
+
for model in commands.get_models(context, store.manifest).values():
|
|
41
|
+
if model.external and model.external.resource and model.external.resource.backend:
|
|
42
|
+
commands.check(context, model, model.external.resource.backend)
|
|
43
|
+
|
|
38
44
|
handler = manager.handler
|
|
39
45
|
|
|
40
46
|
if handler.get_counts():
|
|
@@ -123,11 +123,10 @@ def getall(context: Context, model: Model, page: Page, *, query: Expr = None, li
|
|
|
123
123
|
page.size = size + 1
|
|
124
124
|
|
|
125
125
|
page_meta = PaginationMetaData(page_size=size, limit=limit)
|
|
126
|
+
paginated_query = add_page_expr(query, page)
|
|
126
127
|
while not page_meta.is_finished:
|
|
127
128
|
page_meta.is_finished = True
|
|
128
|
-
|
|
129
|
-
rows = commands.getall(context, model, backend, query=query, **kwargs)
|
|
130
|
-
|
|
129
|
+
rows = commands.getall(context, model, backend, query=paginated_query, **kwargs)
|
|
131
130
|
yield from get_paginated_values(page, page_meta, rows, extract_source_page_keys)
|
|
132
131
|
|
|
133
132
|
|
|
@@ -1095,6 +1095,7 @@ class Config:
|
|
|
1095
1095
|
scope_log: bool
|
|
1096
1096
|
check_contract_scopes: bool
|
|
1097
1097
|
default_auth_client: str
|
|
1098
|
+
default_access_level: str
|
|
1098
1099
|
http_basic_auth: bool
|
|
1099
1100
|
token_validation_key: dict | None = None
|
|
1100
1101
|
token_validation_keys_download_url: str | None = None
|
|
@@ -54,7 +54,6 @@ CONFIG = {
|
|
|
54
54
|
"xml": "spinta.manifests.dict.components:XmlManifest",
|
|
55
55
|
"internal": "spinta.manifests.internal_sql.components:InternalSQLManifest",
|
|
56
56
|
"xsd": "spinta.manifests.xsd.components:XsdManifest",
|
|
57
|
-
"xsd2": "spinta.manifests.xsd2.components:XsdManifest2",
|
|
58
57
|
"openapi": "spinta.manifests.open_api.components:OpenAPIManifest",
|
|
59
58
|
},
|
|
60
59
|
"backends": {
|
|
@@ -347,6 +346,7 @@ CONFIG = {
|
|
|
347
346
|
},
|
|
348
347
|
"config_path": pathlib.Path("tests/config"),
|
|
349
348
|
"default_auth_client": "baa448a8-205c-4faa-a048-a10e4b32a136",
|
|
349
|
+
"default_access_level": "protected",
|
|
350
350
|
"sync_retry_count": 0,
|
|
351
351
|
},
|
|
352
352
|
},
|
|
@@ -73,6 +73,7 @@ def link_access_param(
|
|
|
73
73
|
] = (),
|
|
74
74
|
*,
|
|
75
75
|
use_given: bool = True,
|
|
76
|
+
default_access: Access = Access.private,
|
|
76
77
|
) -> None:
|
|
77
78
|
if component.access is None:
|
|
78
79
|
for parent in parents:
|
|
@@ -83,4 +84,4 @@ def link_access_param(
|
|
|
83
84
|
component.access = candidate
|
|
84
85
|
break
|
|
85
86
|
else:
|
|
86
|
-
component.access =
|
|
87
|
+
component.access = default_access
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
import functools
|
|
5
5
|
import importlib
|
|
6
|
-
from typing import Any, Optional, List, Union
|
|
6
|
+
from typing import Any, Optional, List, Union, Callable
|
|
7
7
|
from typing import Dict
|
|
8
8
|
from typing import TYPE_CHECKING
|
|
9
9
|
from typing import Tuple
|
|
@@ -140,6 +140,10 @@ class UFuncRegistry:
|
|
|
140
140
|
# automatically by __call__.
|
|
141
141
|
importlib.import_module(module)
|
|
142
142
|
|
|
143
|
+
def register(self, name: str, func: Callable, types: tuple) -> None:
|
|
144
|
+
"""Register a single (name, func, types) for plugin-discovered resolvers."""
|
|
145
|
+
self._ufuncs.append((name, func, types))
|
|
146
|
+
|
|
143
147
|
def ufuncs(self):
|
|
144
148
|
# Create commands from collected ufuncs.
|
|
145
149
|
ufuncs = {}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import logging
|
|
3
4
|
from typing import Any
|
|
4
5
|
|
|
5
6
|
from lxml import etree
|
|
6
7
|
|
|
8
|
+
from spinta.adapters.soap_plugins import get_deferred_prepare_names
|
|
7
9
|
from spinta.auth import authorized, query_client
|
|
8
10
|
from spinta.components import Property
|
|
9
11
|
from spinta.core.enums import Action
|
|
@@ -21,6 +23,10 @@ from spinta.utils.config import get_clients_path
|
|
|
21
23
|
from spinta.utils.data import take
|
|
22
24
|
from spinta.utils.schema import NA
|
|
23
25
|
|
|
26
|
+
log = logging.getLogger(__name__)
|
|
27
|
+
|
|
28
|
+
SOAP_BODY_VALUE_TYPE_CDATA = "cdata"
|
|
29
|
+
|
|
24
30
|
|
|
25
31
|
class MakeCDATA:
|
|
26
32
|
"""
|
|
@@ -47,7 +53,7 @@ def eq_(env: SoapQueryBuilder, field: Bind, value: object) -> Expr | None:
|
|
|
47
53
|
try:
|
|
48
54
|
prop = env.resolve_property(field)
|
|
49
55
|
except PropertyNotFound:
|
|
50
|
-
# leave query parameter for other
|
|
56
|
+
# leave query parameter for other resolvers
|
|
51
57
|
return Expr("eq", field, value)
|
|
52
58
|
|
|
53
59
|
if not isinstance(prop.external.prepare, Expr):
|
|
@@ -59,7 +65,7 @@ def eq_(env: SoapQueryBuilder, field: Bind, value: object) -> Expr | None:
|
|
|
59
65
|
@ufunc.resolver(SoapQueryBuilder, Expr, name="and")
|
|
60
66
|
def and_(env: SoapQueryBuilder, expr: Expr) -> list[Any]:
|
|
61
67
|
args, kwargs = expr.resolve(env)
|
|
62
|
-
args = [
|
|
68
|
+
args = [arg_item for arg_item in args if arg_item is not None]
|
|
63
69
|
return env.call("and", args)
|
|
64
70
|
|
|
65
71
|
|
|
@@ -72,16 +78,88 @@ def and_(env: SoapQueryBuilder, args: list) -> Any:
|
|
|
72
78
|
|
|
73
79
|
|
|
74
80
|
def _finalize_soap_request_body_resolve(env: SoapQueryBuilder) -> None:
|
|
81
|
+
deferred_names = get_deferred_prepare_names()
|
|
82
|
+
|
|
75
83
|
for param_body_key, param_body_value in env.soap_request_body.items():
|
|
76
84
|
if not isinstance(param_body_value, Expr):
|
|
77
85
|
continue
|
|
86
|
+
|
|
87
|
+
if getattr(param_body_value, "name", None) in deferred_names:
|
|
88
|
+
continue
|
|
89
|
+
|
|
78
90
|
env.soap_request_body[param_body_key] = env.resolve(param_body_value)
|
|
79
91
|
|
|
80
92
|
|
|
93
|
+
def _param_for_soap_body_key(env: SoapQueryBuilder, param_source: str, expr: Expr | None = None) -> Param | None:
|
|
94
|
+
"""Find the resource Param that owns this SOAP body slot (flat key like ``input/Signature``)."""
|
|
95
|
+
param_lower = param_source.lower()
|
|
96
|
+
|
|
97
|
+
for resource_param in env.params.values():
|
|
98
|
+
soap_body = getattr(resource_param, "soap_body", None)
|
|
99
|
+
if not soap_body:
|
|
100
|
+
continue
|
|
101
|
+
|
|
102
|
+
if param_source in soap_body:
|
|
103
|
+
return resource_param
|
|
104
|
+
|
|
105
|
+
if any(soap_key.lower() == param_lower for soap_key in soap_body):
|
|
106
|
+
return resource_param
|
|
107
|
+
|
|
108
|
+
if expr is not None:
|
|
109
|
+
for prepared_value in soap_body.values():
|
|
110
|
+
if prepared_value is expr:
|
|
111
|
+
return resource_param
|
|
112
|
+
|
|
113
|
+
return None
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def _property_value_key_for_deferred(matched_param: Param | None, param_source: str) -> str:
|
|
117
|
+
if matched_param is not None:
|
|
118
|
+
return matched_param.name
|
|
119
|
+
path_suffix = param_source.rsplit("/", 1)[-1]
|
|
120
|
+
return path_suffix.lower() if path_suffix else param_source
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def _resolve_deferred_soap_request_body_exprs(env: SoapQueryBuilder) -> None:
|
|
124
|
+
deferred_names = get_deferred_prepare_names()
|
|
125
|
+
if not deferred_names:
|
|
126
|
+
return
|
|
127
|
+
|
|
128
|
+
for param_source, deferred_expr in list(env.soap_request_body.items()):
|
|
129
|
+
if not isinstance(deferred_expr, Expr):
|
|
130
|
+
continue
|
|
131
|
+
|
|
132
|
+
if getattr(deferred_expr, "name", None) not in deferred_names:
|
|
133
|
+
continue
|
|
134
|
+
|
|
135
|
+
resolved = env.resolve(deferred_expr)
|
|
136
|
+
matched_param = _param_for_soap_body_key(env, param_source, expr=deferred_expr)
|
|
137
|
+
|
|
138
|
+
if (
|
|
139
|
+
matched_param
|
|
140
|
+
and getattr(matched_param, "soap_body_value_type", None) == SOAP_BODY_VALUE_TYPE_CDATA
|
|
141
|
+
and resolved
|
|
142
|
+
):
|
|
143
|
+
env.soap_request_body[param_source] = MakeCDATA(resolved)
|
|
144
|
+
else:
|
|
145
|
+
env.soap_request_body[param_source] = resolved
|
|
146
|
+
|
|
147
|
+
property_value_key = _property_value_key_for_deferred(matched_param, param_source)
|
|
148
|
+
env.property_values[property_value_key] = resolved
|
|
149
|
+
|
|
150
|
+
if matched_param is None:
|
|
151
|
+
log.warning(
|
|
152
|
+
"SOAP deferred resolve: no Param matched for %r; property_values updated under %r",
|
|
153
|
+
param_source,
|
|
154
|
+
property_value_key,
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
|
|
81
158
|
def _populate_soap_request_body_with_url_values(env: SoapQueryBuilder) -> None:
|
|
82
159
|
for prop in take(env.model.properties).values():
|
|
83
160
|
if not authorized(env.context, prop, Action.GETALL):
|
|
84
161
|
continue
|
|
162
|
+
|
|
85
163
|
env.call("soap_request_body", prop)
|
|
86
164
|
|
|
87
165
|
|
|
@@ -93,25 +171,24 @@ def soap_request_body(env: SoapQueryBuilder) -> None:
|
|
|
93
171
|
for param in env.params.values():
|
|
94
172
|
if not hasattr(param, "soap_body"):
|
|
95
173
|
continue
|
|
174
|
+
|
|
96
175
|
env.soap_request_body.update(param.soap_body)
|
|
97
176
|
|
|
98
177
|
_finalize_soap_request_body_resolve(env)
|
|
99
178
|
_populate_soap_request_body_with_url_values(env)
|
|
179
|
+
_resolve_deferred_soap_request_body_exprs(env)
|
|
100
180
|
|
|
101
181
|
|
|
102
182
|
@ufunc.resolver(SoapQueryBuilder, Property)
|
|
103
183
|
def soap_request_body(env: SoapQueryBuilder, prop: Property) -> None:
|
|
104
184
|
"""
|
|
105
|
-
Only care
|
|
185
|
+
Only care for properties that describe URL query parameters:
|
|
106
186
|
properties without `source` and with `prepare`.
|
|
107
|
-
We ignore the rest.
|
|
108
187
|
"""
|
|
109
188
|
if prop.external.name:
|
|
110
|
-
# Ignore properties with `source`
|
|
111
189
|
return None
|
|
112
190
|
|
|
113
191
|
if not isinstance(prop.external.prepare, Expr):
|
|
114
|
-
# Ignore properties without `prepare` expression
|
|
115
192
|
return None
|
|
116
193
|
|
|
117
194
|
resource_param = env(this=prop).resolve(prop.external.prepare)
|
|
@@ -129,25 +206,41 @@ def _get_final_soap_request_body_value(env: SoapQueryBuilder, property_name: str
|
|
|
129
206
|
|
|
130
207
|
@ufunc.resolver(SoapQueryBuilder, Property, Param)
|
|
131
208
|
def soap_request_body(env: SoapQueryBuilder, prop: Property, param: Param) -> None:
|
|
132
|
-
"""
|
|
133
|
-
|
|
209
|
+
"""Merge URL query params into the SOAP body; resolve non-deferred Expr; keep deferred Expr for a later pass."""
|
|
210
|
+
soap_body = getattr(param, "soap_body", None)
|
|
211
|
+
if not soap_body:
|
|
212
|
+
return
|
|
213
|
+
|
|
214
|
+
param_source = next(iter(soap_body))
|
|
215
|
+
deferred_names = get_deferred_prepare_names()
|
|
216
|
+
|
|
134
217
|
final_value = _get_final_soap_request_body_value(env, prop.place, param_source)
|
|
135
218
|
|
|
219
|
+
if isinstance(final_value, Expr) and getattr(final_value, "name", None) not in deferred_names:
|
|
220
|
+
final_value = env.resolve(final_value)
|
|
221
|
+
|
|
222
|
+
is_deferred_expr = isinstance(final_value, Expr) and getattr(final_value, "name", None) in deferred_names
|
|
223
|
+
|
|
136
224
|
if final_value is NA:
|
|
137
|
-
# If value not in URL and DSA has no default - remove it from SOAP request completely
|
|
138
225
|
env.soap_request_body.pop(param_source, None)
|
|
139
226
|
final_value = None
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
227
|
+
|
|
228
|
+
elif is_deferred_expr:
|
|
229
|
+
env.soap_request_body[param_source] = final_value
|
|
230
|
+
|
|
231
|
+
else:
|
|
232
|
+
if param.soap_body_value_type == SOAP_BODY_VALUE_TYPE_CDATA and final_value:
|
|
233
|
+
soap_final_value = MakeCDATA(final_value)
|
|
234
|
+
else:
|
|
235
|
+
soap_final_value = final_value
|
|
236
|
+
|
|
143
237
|
env.soap_request_body[param_source] = soap_final_value
|
|
144
238
|
|
|
145
|
-
# Check if required property values exist
|
|
146
239
|
if prop.dtype.required and param_source not in env.soap_request_body:
|
|
147
240
|
raise MissingRequiredProperty(prop, prop=prop.name)
|
|
148
241
|
|
|
149
|
-
|
|
150
|
-
|
|
242
|
+
if not is_deferred_expr:
|
|
243
|
+
env.property_values.update({param.name: final_value})
|
|
151
244
|
|
|
152
245
|
|
|
153
246
|
@ufunc.resolver(SoapQueryBuilder, str)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from spinta import commands, exceptions
|
|
2
|
+
from spinta.components import Context, Model
|
|
3
|
+
from spinta.core.ufuncs import Expr
|
|
4
|
+
from spinta.datasets.backends.dataframe.components import DaskBackend
|
|
5
|
+
from spinta.datasets.backends.dataframe.ufuncs.query.ufuncs import COMPARE
|
|
6
|
+
from spinta.handlers import ErrorManager
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _get_compare_operators(expr: Expr) -> list[str]:
|
|
10
|
+
"""Recursively collect compare operator (filters) names from an Expr tree."""
|
|
11
|
+
if not isinstance(expr, Expr):
|
|
12
|
+
return []
|
|
13
|
+
filters: list[str] = []
|
|
14
|
+
if expr.name in COMPARE:
|
|
15
|
+
filters.append(expr.name)
|
|
16
|
+
for arg in expr.args:
|
|
17
|
+
filters.extend(_get_compare_operators(arg))
|
|
18
|
+
for val in expr.kwargs.values():
|
|
19
|
+
filters.extend(_get_compare_operators(val))
|
|
20
|
+
return filters
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@commands.check.register(Context, Model, DaskBackend)
|
|
24
|
+
def check(context: Context, model: Model, backend: DaskBackend) -> None:
|
|
25
|
+
# If there are any compare operators in the prepare expression,
|
|
26
|
+
# raise an error since they are not supported for Dask backend.
|
|
27
|
+
if (
|
|
28
|
+
model.external
|
|
29
|
+
and model.external.prepare
|
|
30
|
+
and (compare_operators := list(dict.fromkeys(_get_compare_operators(model.external.prepare))))
|
|
31
|
+
):
|
|
32
|
+
manager: ErrorManager = context.get("error_manager")
|
|
33
|
+
manager.handle_error(exceptions.DaskBackendCompareNotSupported(model, operators=compare_operators))
|