spinta 0.2.dev20__tar.gz → 0.2.dev21__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.
Files changed (763) hide show
  1. {spinta-0.2.dev20 → spinta-0.2.dev21}/PKG-INFO +1 -1
  2. {spinta-0.2.dev20 → spinta-0.2.dev21}/pyproject.toml +1 -1
  3. spinta-0.2.dev21/spinta/backends/helpers.py +598 -0
  4. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/init.py +3 -3
  5. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/manifest.py +1 -2
  6. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/read.py +7 -7
  7. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/bootstrap.py +16 -0
  8. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/init.py +10 -11
  9. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/manifest.py +5 -9
  10. spinta-0.2.dev21/spinta/backends/postgresql/commands/migrate/constants.py +1 -0
  11. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/migrate.py +26 -118
  12. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/model.py +233 -153
  13. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/array.py +55 -29
  14. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/datatype.py +45 -34
  15. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/file.py +27 -18
  16. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/ref.py +112 -88
  17. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/string.py +20 -10
  18. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/text.py +21 -9
  19. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/redirect.py +5 -4
  20. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/summary.py +22 -18
  21. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/wipe.py +13 -10
  22. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/components.py +6 -4
  23. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/__init__.py +15 -0
  24. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/changes.py +5 -5
  25. spinta-0.2.dev21/spinta/backends/postgresql/helpers/migrate/actions.py +578 -0
  26. spinta-0.2.dev21/spinta/backends/postgresql/helpers/migrate/cast.py +67 -0
  27. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/migrate/migrate.py +367 -430
  28. spinta-0.2.dev21/spinta/backends/postgresql/helpers/migrate/name.py +219 -0
  29. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/name.py +18 -42
  30. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/redirect.py +5 -5
  31. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/array/init.py +9 -8
  32. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/file/init.py +7 -6
  33. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/ref/init.py +21 -6
  34. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/admin.py +3 -0
  35. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/admin/scripts/changelog.py +16 -16
  36. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/admin/scripts/deduplicate.py +7 -7
  37. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/script/components.py +13 -0
  38. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/script/core.py +27 -6
  39. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/components.py +1 -0
  40. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/registry.py +15 -0
  41. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/comments.py +37 -28
  42. spinta-0.2.dev21/spinta/cli/helpers/upgrade/scripts/backends/postgresql/schemas.py +313 -0
  43. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/redirect.py +3 -3
  44. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/main.py +0 -1
  45. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/migrate.py +0 -16
  46. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/upgrade.py +4 -0
  47. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/commands/__init__.py +0 -23
  48. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/config.py +1 -3
  49. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +16 -1
  50. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -6
  51. spinta-0.2.dev21/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +29 -0
  52. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/commands/load.py +1 -3
  53. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/commands/manifest.py +0 -13
  54. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/dict/commands/load.py +0 -2
  55. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/helpers.py +0 -12
  56. spinta-0.2.dev21/spinta/manifests/internal/commands/load.py +41 -0
  57. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/commands/load.py +0 -2
  58. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/memory/commands/load.py +0 -2
  59. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/open_api/commands/load.py +0 -2
  60. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/rdf/commands/load.py +0 -2
  61. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/sql/commands/load.py +0 -4
  62. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/sql/helpers.py +11 -3
  63. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/commands/load.py +0 -4
  64. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/constants.py +1 -0
  65. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/xsd/commands/load.py +0 -4
  66. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/yaml/commands/load.py +13 -34
  67. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/yaml/commands/manifest.py +0 -11
  68. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/yaml/helpers.py +1 -11
  69. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/nodes.py +0 -4
  70. spinta-0.2.dev21/spinta/testing/migration.py +325 -0
  71. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/pytest.py +21 -4
  72. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/datatype.py +6 -0
  73. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/text/helpers.py +1 -1
  74. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/querybuilder/ufuncs.py +9 -0
  75. spinta-0.2.dev21/spinta/ufuncs/resultbuilder/ufuncs.py +207 -0
  76. spinta-0.2.dev20/spinta/backends/helpers.py +0 -402
  77. spinta-0.2.dev20/spinta/backends/mongo/commands/freeze.py +0 -15
  78. spinta-0.2.dev20/spinta/backends/postgresql/commands/freeze.py +0 -190
  79. spinta-0.2.dev20/spinta/backends/postgresql/commands/migrate/constants.py +0 -1
  80. spinta-0.2.dev20/spinta/backends/postgresql/helpers/migrate/actions.py +0 -462
  81. spinta-0.2.dev20/spinta/backends/postgresql/types/array/freeze.py +0 -86
  82. spinta-0.2.dev20/spinta/backends/postgresql/types/file/freeze.py +0 -102
  83. spinta-0.2.dev20/spinta/backends/postgresql/types/object/freeze.py +0 -57
  84. spinta-0.2.dev20/spinta/backends/postgresql/types/ref/freeze.py +0 -83
  85. spinta-0.2.dev20/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -66
  86. spinta-0.2.dev20/spinta/manifests/backend/commands/freeze.py +0 -10
  87. spinta-0.2.dev20/spinta/manifests/internal/commands/load.py +0 -59
  88. spinta-0.2.dev20/spinta/manifests/yaml/commands/freeze.py +0 -50
  89. spinta-0.2.dev20/spinta/migrations/__init__.py +0 -23
  90. spinta-0.2.dev20/spinta/migrations/schema/alembic.py +0 -119
  91. spinta-0.2.dev20/spinta/testing/migration.py +0 -204
  92. spinta-0.2.dev20/spinta/ufuncs/resultbuilder/ufuncs.py +0 -100
  93. {spinta-0.2.dev20 → spinta-0.2.dev21}/LICENSE +0 -0
  94. {spinta-0.2.dev20 → spinta-0.2.dev21}/README.rst +0 -0
  95. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/__init__.py +0 -0
  96. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/__main__.py +0 -0
  97. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/accesslog/__init__.py +0 -0
  98. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/accesslog/file.py +0 -0
  99. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/accesslog/python.py +0 -0
  100. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/adapters/__init__.py +0 -0
  101. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/adapters/rc/__init__.py +0 -0
  102. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/adapters/rc/signature_adapter.py +0 -0
  103. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/adapters/soap_plugins.py +0 -0
  104. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/api/__init__.py +0 -0
  105. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/api/inspect.py +0 -0
  106. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/api/schema.py +0 -0
  107. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/api/validators.py +0 -0
  108. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/asgi.py +0 -0
  109. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/auth.py +0 -0
  110. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/__init__.py +0 -0
  111. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/components.py +0 -0
  112. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/constants.py +0 -0
  113. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/__init__.py +0 -0
  114. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/__init__.py +0 -0
  115. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/bootstrap.py +0 -0
  116. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/changes.py +0 -0
  117. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/decode.py +0 -0
  118. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/encode.py +0 -0
  119. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/init.py +0 -0
  120. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/load.py +0 -0
  121. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/migrate.py +0 -0
  122. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/read.py +0 -0
  123. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/validate.py +0 -0
  124. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/wait.py +0 -0
  125. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/wipe.py +0 -0
  126. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/commands/write.py +0 -0
  127. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/fs/components.py +0 -0
  128. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/__init__.py +0 -0
  129. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/__init__.py +0 -0
  130. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/auth.py +0 -0
  131. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/bootstrap.py +0 -0
  132. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/changes.py +0 -0
  133. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/check.py +0 -0
  134. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/encode.py +0 -0
  135. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/load.py +0 -0
  136. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/wait.py +0 -0
  137. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/wipe.py +0 -0
  138. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/commands/write.py +0 -0
  139. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/memory/components.py +0 -0
  140. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/__init__.py +0 -0
  141. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/__init__.py +0 -0
  142. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/bootstrap.py +0 -0
  143. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/changes.py +0 -0
  144. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/encode.py +0 -0
  145. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/init.py +0 -0
  146. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/load.py +0 -0
  147. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/migrate.py +0 -0
  148. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/read.py +0 -0
  149. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/validate.py +0 -0
  150. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/wait.py +0 -0
  151. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/wipe.py +0 -0
  152. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/commands/write.py +0 -0
  153. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/components.py +0 -0
  154. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/helpers.py +0 -0
  155. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/types/__init__.py +0 -0
  156. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/types/array/__init__.py +0 -0
  157. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/types/array/write.py +0 -0
  158. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/types/file/__init__.py +0 -0
  159. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/types/file/write.py +0 -0
  160. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/types/object/__init__.py +0 -0
  161. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/types/object/write.py +0 -0
  162. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/ufuncs/__init__.py +0 -0
  163. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/ufuncs/components.py +0 -0
  164. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/mongo/ufuncs/ufuncs.py +0 -0
  165. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/__init__.py +0 -0
  166. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/__init__.py +0 -0
  167. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
  168. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/changes.py +0 -0
  169. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/init.py +0 -0
  170. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/load.py +0 -0
  171. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/read.py +0 -0
  172. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/wait.py +0 -0
  173. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/wipe.py +0 -0
  174. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/commands/write.py +0 -0
  175. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/nobackend/components.py +0 -0
  176. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/__init__.py +0 -0
  177. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/__init__.py +0 -0
  178. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/changes.py +0 -0
  179. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/column.py +0 -0
  180. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/encode.py +0 -0
  181. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/link.py +0 -0
  182. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/load.py +0 -0
  183. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/__init__.py +0 -0
  184. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
  185. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/__init__.py +0 -0
  186. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
  187. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/migrate/types/object.py +0 -0
  188. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/read.py +0 -0
  189. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/validate.py +0 -0
  190. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/wait.py +0 -0
  191. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/commands/write.py +0 -0
  192. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/constants.py +0 -0
  193. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/files.py +0 -0
  194. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
  195. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/extractors.py +0 -0
  196. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/manifest.py +0 -0
  197. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/migrate/__init__.py +0 -0
  198. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/type.py +0 -0
  199. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/helpers/validate.py +0 -0
  200. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/sqlalchemy.py +0 -0
  201. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/__init__.py +0 -0
  202. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/array/__init__.py +0 -0
  203. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/array/wipe.py +0 -0
  204. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/array/write.py +0 -0
  205. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/array_backref/__init__.py +0 -0
  206. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
  207. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/backref/__init__.py +0 -0
  208. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/backref/init.py +0 -0
  209. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/denorm/__init__.py +0 -0
  210. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/denorm/init.py +0 -0
  211. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/external_ref/__init__.py +0 -0
  212. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
  213. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/file/__init__.py +0 -0
  214. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/file/read.py +0 -0
  215. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/file/write.py +0 -0
  216. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/geometry/__init__.py +0 -0
  217. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/geometry/encode.py +0 -0
  218. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/geometry/init.py +0 -0
  219. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/geometry/write.py +0 -0
  220. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/object/__init__.py +0 -0
  221. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/object/init.py +0 -0
  222. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/object/read.py +0 -0
  223. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/object/wipe.py +0 -0
  224. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/ref/__init__.py +0 -0
  225. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/ref/validate.py +0 -0
  226. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/text/__init__.py +0 -0
  227. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/types/text/init.py +0 -0
  228. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/__init__.py +0 -0
  229. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/components.py +0 -0
  230. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/query/__init__.py +0 -0
  231. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
  232. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  233. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/result/__init__.py +0 -0
  234. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
  235. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
  236. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
  237. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/backends/types/__init__.py +0 -0
  238. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/__init__.py +0 -0
  239. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/auth.py +0 -0
  240. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/config.py +0 -0
  241. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/data.py +0 -0
  242. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/get.py +0 -0
  243. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/__init__.py +0 -0
  244. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/admin/__init__.py +0 -0
  245. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/admin/components.py +0 -0
  246. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/admin/registry.py +0 -0
  247. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/admin/scripts/__init__.py +0 -0
  248. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/auth.py +0 -0
  249. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/data.py +0 -0
  250. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/errors.py +0 -0
  251. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/__init__.py +0 -0
  252. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/backends/__init__.py +0 -0
  253. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/backends/postgresql/__init__.py +0 -0
  254. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/backends/postgresql/commands.py +0 -0
  255. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
  256. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
  257. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/commands.py +0 -0
  258. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/components.py +0 -0
  259. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/export/helpers.py +0 -0
  260. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/manifest.py +0 -0
  261. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/message.py +0 -0
  262. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/migrate.py +0 -0
  263. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/__init__.py +0 -0
  264. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/components.py +0 -0
  265. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/delete.py +0 -0
  266. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/error.py +0 -0
  267. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/read.py +0 -0
  268. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/state.py +0 -0
  269. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/sync.py +0 -0
  270. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/utils.py +0 -0
  271. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/push/write.py +0 -0
  272. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/script/__init__.py +0 -0
  273. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/script/helpers.py +0 -0
  274. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/script/registry.py +0 -0
  275. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/store.py +0 -0
  276. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/__init__.py +0 -0
  277. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/api_helpers.py +0 -0
  278. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/controllers/__init__.py +0 -0
  279. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/controllers/data_service.py +0 -0
  280. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/controllers/dataset.py +0 -0
  281. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/controllers/distribution.py +0 -0
  282. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
  283. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/controllers/synchronization/__init__.py +0 -0
  284. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/controllers/synchronization/connection.py +0 -0
  285. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/controllers/synchronization/manifest_catalog_to_agent.py +0 -0
  286. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/enum.py +0 -0
  287. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/sync/helpers.py +0 -0
  288. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/typer.py +0 -0
  289. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/__init__.py +0 -0
  290. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/__init__.py +0 -0
  291. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/backends/__init__.py +0 -0
  292. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/__init__.py +0 -0
  293. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
  294. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/keymaps/__init__.py +0 -0
  295. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/__init__.py +0 -0
  296. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
  297. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
  298. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
  299. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
  300. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/init.py +0 -0
  301. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/inspect.py +0 -0
  302. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/keymap.py +0 -0
  303. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/manifest.py +0 -0
  304. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/pii.py +0 -0
  305. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/pull.py +0 -0
  306. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/push.py +0 -0
  307. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/server.py +0 -0
  308. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/show.py +0 -0
  309. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/cli/sync.py +0 -0
  310. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/client.py +0 -0
  311. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/commands/auth.py +0 -0
  312. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/commands/helpers.py +0 -0
  313. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/commands/read.py +0 -0
  314. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/commands/search.py +0 -0
  315. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/commands/version.py +0 -0
  316. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/commands/write.py +0 -0
  317. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/compat.py +0 -0
  318. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/components.py +0 -0
  319. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/config.yml +0 -0
  320. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/core/__init__.py +0 -0
  321. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/core/access.py +0 -0
  322. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/core/config.py +0 -0
  323. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/core/context.py +0 -0
  324. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/core/enums.py +0 -0
  325. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/core/ufuncs.py +0 -0
  326. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/__init__.py +0 -0
  327. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/__init__.py +0 -0
  328. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/__init__.py +0 -0
  329. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/__init__.py +0 -0
  330. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/csv/__init__.py +0 -0
  331. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/csv/commands/__init__.py +0 -0
  332. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/csv/commands/read.py +0 -0
  333. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
  334. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/json/__init__.py +0 -0
  335. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/json/commands/__init__.py +0 -0
  336. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/json/commands/read.py +0 -0
  337. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
  338. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/memory/__init__.py +0 -0
  339. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
  340. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/soap/__init__.py +0 -0
  341. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/soap/commands/__init__.py +0 -0
  342. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +0 -0
  343. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/soap/components.py +0 -0
  344. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/__init__.py +0 -0
  345. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
  346. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +0 -0
  347. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/xml/__init__.py +0 -0
  348. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/xml/commands/__init__.py +0 -0
  349. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +0 -0
  350. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
  351. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/commands/__init__.py +0 -0
  352. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/commands/check.py +0 -0
  353. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/commands/read.py +0 -0
  354. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/components.py +0 -0
  355. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/ufuncs/__init__.py +0 -0
  356. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
  357. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/ufuncs/query/__init__.py +0 -0
  358. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +0 -0
  359. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
  360. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/helpers.py +0 -0
  361. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/notimpl/__init__.py +0 -0
  362. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/notimpl/commands/__init__.py +0 -0
  363. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
  364. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
  365. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/notimpl/components.py +0 -0
  366. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/__init__.py +0 -0
  367. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/__init__.py +0 -0
  368. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
  369. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mariadb/__init__.py +0 -0
  370. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
  371. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
  372. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/__init__.py +0 -0
  373. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/__init__.py +0 -0
  374. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
  375. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
  376. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mssql/__init__.py +0 -0
  377. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
  378. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
  379. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mssql/ufuncs/__init__.py +0 -0
  380. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/__init__.py +0 -0
  381. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
  382. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
  383. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mysql/__init__.py +0 -0
  384. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
  385. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
  386. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mysql/ufuncs/__init__.py +0 -0
  387. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/__init__.py +0 -0
  388. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
  389. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
  390. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/__init__.py +0 -0
  391. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
  392. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/helpers.py +0 -0
  393. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/types/__init__.py +0 -0
  394. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/types/geometry/__init__.py +0 -0
  395. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/types/geometry/encode.py +0 -0
  396. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/ufuncs/__init__.py +0 -0
  397. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/__init__.py +0 -0
  398. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
  399. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -0
  400. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/postgresql/__init__.py +0 -0
  401. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
  402. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
  403. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/__init__.py +0 -0
  404. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/__init__.py +0 -0
  405. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
  406. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  407. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/__init__.py +0 -0
  408. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/base.py +0 -0
  409. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/commands/__init__.py +0 -0
  410. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/commands/cast.py +0 -0
  411. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/commands/load.py +0 -0
  412. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/commands/read.py +0 -0
  413. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/components.py +0 -0
  414. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/constants.py +0 -0
  415. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/dialect.py +0 -0
  416. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/formats.py +0 -0
  417. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/helpers.py +0 -0
  418. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/identifier.py +0 -0
  419. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/introspection.py +0 -0
  420. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/log4j.properties +0 -0
  421. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/types.py +0 -0
  422. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/ufuncs/__init__.py +0 -0
  423. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/__init__.py +0 -0
  424. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/components.py +0 -0
  425. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/ufuncs.py +0 -0
  426. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sqlite/__init__.py +0 -0
  427. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
  428. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
  429. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/__init__.py +0 -0
  430. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/__init__.py +0 -0
  431. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
  432. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
  433. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/commands/__init__.py +0 -0
  434. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
  435. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/commands/cast.py +0 -0
  436. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/commands/column.py +0 -0
  437. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/commands/init.py +0 -0
  438. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/commands/load.py +0 -0
  439. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/commands/read.py +0 -0
  440. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/commands/wait.py +0 -0
  441. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/components.py +0 -0
  442. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/helpers.py +0 -0
  443. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/__init__.py +0 -0
  444. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
  445. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/query/__init__.py +0 -0
  446. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
  447. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
  448. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/result/__init__.py +0 -0
  449. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
  450. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
  451. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/__init__.py +0 -0
  452. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/commands/__init__.py +0 -0
  453. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
  454. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
  455. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
  456. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/components.py +0 -0
  457. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/ufuncs/__init__.py +0 -0
  458. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
  459. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
  460. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/wsdl/__init__.py +0 -0
  461. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/wsdl/commads/__init__.py +0 -0
  462. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
  463. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/backends/wsdl/components.py +0 -0
  464. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/commands/__init__.py +0 -0
  465. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/commands/check.py +0 -0
  466. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/commands/error.py +0 -0
  467. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/commands/inspect.py +0 -0
  468. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/commands/link.py +0 -0
  469. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/commands/load.py +0 -0
  470. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/commands/wipe.py +0 -0
  471. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/components.py +0 -0
  472. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/enums.py +0 -0
  473. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/helpers.py +0 -0
  474. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/inspect/__init__.py +0 -0
  475. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/inspect/commands/__init__.py +0 -0
  476. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/inspect/commands/manifest.py +0 -0
  477. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/inspect/commands/merge.py +0 -0
  478. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/inspect/components.py +0 -0
  479. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/inspect/helpers.py +0 -0
  480. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/keymaps/__init__.py +0 -0
  481. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/keymaps/components.py +0 -0
  482. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/keymaps/redis.py +0 -0
  483. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
  484. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/keymaps/sync.py +0 -0
  485. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/datasets/utils.py +0 -0
  486. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/__init__.py +0 -0
  487. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/comments/__init__.py +0 -0
  488. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/comments/components.py +0 -0
  489. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/comments/helpers.py +0 -0
  490. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/enum/__init__.py +0 -0
  491. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/enum/commands.py +0 -0
  492. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/enum/components.py +0 -0
  493. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/enum/helpers.py +0 -0
  494. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/enum/ufuncs.py +0 -0
  495. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/lang/__init__.py +0 -0
  496. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/lang/components.py +0 -0
  497. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/lang/helpers.py +0 -0
  498. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/param/__init__.py +0 -0
  499. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/param/components.py +0 -0
  500. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/param/helpers.py +0 -0
  501. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/param/ufuncs.py +0 -0
  502. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/prefix/__init__.py +0 -0
  503. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/prefix/commands/__init__.py +0 -0
  504. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/prefix/commands/load.py +0 -0
  505. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/prefix/components.py +0 -0
  506. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dimensions/prefix/helpers.py +0 -0
  507. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/dispatcher.py +0 -0
  508. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/exceptions.py +0 -0
  509. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/fetcher.py +0 -0
  510. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/__init__.py +0 -0
  511. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/ascii/__init__.py +0 -0
  512. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/ascii/commands.py +0 -0
  513. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/ascii/components.py +0 -0
  514. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/ascii/helpers.py +0 -0
  515. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/components.py +0 -0
  516. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/csv/__init__.py +0 -0
  517. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/csv/commands.py +0 -0
  518. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/csv/components.py +0 -0
  519. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/helpers.py +0 -0
  520. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/html/__init__.py +0 -0
  521. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/html/commands.py +0 -0
  522. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/html/components.py +0 -0
  523. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/html/helpers.py +0 -0
  524. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/json/__init__.py +0 -0
  525. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/json/commands.py +0 -0
  526. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/json/components.py +0 -0
  527. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/jsonlines/__init__.py +0 -0
  528. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/jsonlines/commands.py +0 -0
  529. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/jsonlines/components.py +0 -0
  530. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/rdf/commands.py +0 -0
  531. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/rdf/components.py +0 -0
  532. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/xlsx/__init__.py +0 -0
  533. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/xlsx/commands.py +0 -0
  534. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/formats/xlsx/components.py +0 -0
  535. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/hacks/__init__.py +0 -0
  536. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/hacks/spyna.py +0 -0
  537. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/hacks/urlparams.py +0 -0
  538. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/handlers.py +0 -0
  539. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/logging_config.py +0 -0
  540. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifest/_ns.yml +0 -0
  541. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifest/_schema/version.yml +0 -0
  542. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifest/_schema.yml +0 -0
  543. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifest/_txn.yml +0 -0
  544. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/__init__.py +0 -0
  545. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/__init__.py +0 -0
  546. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/commands/__init__.py +0 -0
  547. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/commands/bootstrap.py +0 -0
  548. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/commands/configure.py +0 -0
  549. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/commands/migrate.py +0 -0
  550. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/commands/sync.py +0 -0
  551. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/components.py +0 -0
  552. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/backend/helpers.py +0 -0
  553. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/__init__.py +0 -0
  554. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/auth.py +0 -0
  555. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/check.py +0 -0
  556. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/error.py +0 -0
  557. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/init.py +0 -0
  558. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/inspect.py +0 -0
  559. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/link.py +0 -0
  560. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/load.py +0 -0
  561. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/manifest.py +0 -0
  562. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/migrate.py +0 -0
  563. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/commands/read.py +0 -0
  564. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/components.py +0 -0
  565. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/dict/__init__.py +0 -0
  566. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/dict/commands/__init__.py +0 -0
  567. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/dict/commands/configure.py +0 -0
  568. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/dict/components.py +0 -0
  569. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/dict/helpers.py +0 -0
  570. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal/__init__.py +0 -0
  571. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal/commands/__init__.py +0 -0
  572. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal/commands/configure.py +0 -0
  573. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal/components.py +0 -0
  574. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/__init__.py +0 -0
  575. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/commands/__init__.py +0 -0
  576. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/commands/auth.py +0 -0
  577. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/commands/backend.py +0 -0
  578. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
  579. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/commands/configure.py +0 -0
  580. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
  581. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/commands/read.py +0 -0
  582. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/components.py +0 -0
  583. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/internal_sql/helpers.py +0 -0
  584. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/memory/__init__.py +0 -0
  585. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/memory/commands/__init__.py +0 -0
  586. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/memory/commands/configure.py +0 -0
  587. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/memory/components.py +0 -0
  588. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/mermaid/__init__.py +0 -0
  589. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/mermaid/components.py +0 -0
  590. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/mermaid/helpers.py +0 -0
  591. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/open_api/__init__.py +0 -0
  592. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/open_api/commands/__init__.py +0 -0
  593. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/open_api/commands/configure.py +0 -0
  594. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/open_api/components.py +0 -0
  595. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/open_api/helpers.py +0 -0
  596. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/open_api/openapi_config.py +0 -0
  597. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/open_api/openapi_generator.py +0 -0
  598. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
  599. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/rdf/commands/configure.py +0 -0
  600. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/rdf/components.py +0 -0
  601. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/rdf/helpers.py +0 -0
  602. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/sql/__init__.py +0 -0
  603. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/sql/commands/__init__.py +0 -0
  604. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/sql/commands/configure.py +0 -0
  605. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/sql/components.py +0 -0
  606. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/__init__.py +0 -0
  607. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/commands/__init__.py +0 -0
  608. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
  609. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/commands/configure.py +0 -0
  610. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/components.py +0 -0
  611. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/formats/__init__.py +0 -0
  612. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/formats/gsheets.py +0 -0
  613. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/tabular/helpers.py +0 -0
  614. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/xsd/__init__.py +0 -0
  615. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/xsd/commands/__init__.py +0 -0
  616. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/xsd/commands/configure.py +0 -0
  617. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/xsd/components.py +0 -0
  618. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/xsd/helpers.py +0 -0
  619. /spinta-0.2.dev20/spinta/manifests/yaml/__init__.py → /spinta-0.2.dev21/spinta/manifests/xsd2/commands/load.py +0 -0
  620. {spinta-0.2.dev20/spinta/manifests/yaml/commands → spinta-0.2.dev21/spinta/manifests/yaml}/__init__.py +0 -0
  621. {spinta-0.2.dev20/spinta/migrations/schema → spinta-0.2.dev21/spinta/manifests/yaml/commands}/__init__.py +0 -0
  622. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
  623. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/yaml/commands/configure.py +0 -0
  624. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/yaml/commands/migrate.py +0 -0
  625. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/yaml/commands/sync.py +0 -0
  626. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/manifests/yaml/components.py +0 -0
  627. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/methods.py +0 -0
  628. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/middlewares.py +0 -0
  629. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/naming/__init__.py +0 -0
  630. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/naming/components.py +0 -0
  631. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/naming/helpers.py +0 -0
  632. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/naming/ufuncts.py +0 -0
  633. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/renderer.py +0 -0
  634. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/spyna.py +0 -0
  635. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/templates/base.html +0 -0
  636. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/templates/data.html +0 -0
  637. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/templates/error.html +0 -0
  638. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/templates/form.html +0 -0
  639. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/__init__.py +0 -0
  640. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/cli.py +0 -0
  641. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/client.py +0 -0
  642. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/config.py +0 -0
  643. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/context.py +0 -0
  644. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/csv.py +0 -0
  645. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/data.py +0 -0
  646. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/datasets.py +0 -0
  647. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/dtypes.py +0 -0
  648. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/manifest.py +0 -0
  649. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/push.py +0 -0
  650. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/request.py +0 -0
  651. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/tabular.py +0 -0
  652. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/types/__init__.py +0 -0
  653. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/types/geometry.py +0 -0
  654. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/ufuncs.py +0 -0
  655. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/testing/utils.py +0 -0
  656. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/__init__.py +0 -0
  657. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/array/__init__.py +0 -0
  658. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/array/check.py +0 -0
  659. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/array/link.py +0 -0
  660. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/array/resolve.py +0 -0
  661. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/backref/__init__.py +0 -0
  662. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/backref/link.py +0 -0
  663. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/command.py +0 -0
  664. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/config.py +0 -0
  665. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/denorm/__init__.py +0 -0
  666. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/denorm/check.py +0 -0
  667. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/denorm/link.py +0 -0
  668. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/file/__init__.py +0 -0
  669. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/file/components.py +0 -0
  670. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/file/decode.py +0 -0
  671. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/file/helpers.py +0 -0
  672. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/geometry/__init__.py +0 -0
  673. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/geometry/components.py +0 -0
  674. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/geometry/constants.py +0 -0
  675. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/geometry/helpers.py +0 -0
  676. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/geometry/load.py +0 -0
  677. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/helpers.py +0 -0
  678. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/inherit/__init__.py +0 -0
  679. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/inherit/check.py +0 -0
  680. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/model.py +0 -0
  681. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/namespace.py +0 -0
  682. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/object/__init__.py +0 -0
  683. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/object/check.py +0 -0
  684. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/object/link.py +0 -0
  685. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/partial/__init__.py +0 -0
  686. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/partial/link.py +0 -0
  687. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/ref/__init__.py +0 -0
  688. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/ref/check.py +0 -0
  689. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/ref/link.py +0 -0
  690. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/ref/resolve.py +0 -0
  691. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/store.py +0 -0
  692. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/text/__init__.py +0 -0
  693. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/text/check.py +0 -0
  694. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/text/components.py +0 -0
  695. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/types/text/load.py +0 -0
  696. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/typing.py +0 -0
  697. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/__init__.py +0 -0
  698. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/binds.py +0 -0
  699. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/changebase/__init__.py +0 -0
  700. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/changebase/components.py +0 -0
  701. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/changebase/helpers.py +0 -0
  702. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/changebase/ufuncs.py +0 -0
  703. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/common.py +0 -0
  704. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/components.py +0 -0
  705. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/helpers.py +0 -0
  706. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/linkbuilder/__init__.py +0 -0
  707. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/linkbuilder/components.py +0 -0
  708. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/linkbuilder/ufuncs.py +0 -0
  709. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/loadbuilder/__init__.py +0 -0
  710. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/loadbuilder/components.py +0 -0
  711. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
  712. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/loadbuilder/ufuncs.py +0 -0
  713. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/propertyresolver/__init__.py +0 -0
  714. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/propertyresolver/components.py +0 -0
  715. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
  716. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/querybuilder/__init__.py +0 -0
  717. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/querybuilder/components.py +0 -0
  718. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/querybuilder/helpers.py +0 -0
  719. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/requestparamsbuilder/__init__.py +0 -0
  720. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
  721. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
  722. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
  723. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/resultbuilder/__init__.py +0 -0
  724. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/resultbuilder/components.py +0 -0
  725. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
  726. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/summaryenv/__init__.py +0 -0
  727. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/summaryenv/components.py +0 -0
  728. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
  729. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/units/__init__.py +0 -0
  730. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/units/components.py +0 -0
  731. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/units/helpers.py +0 -0
  732. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/urlparams.py +0 -0
  733. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/__init__.py +0 -0
  734. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/aiotools.py +0 -0
  735. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/changes.py +0 -0
  736. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/collections.py +0 -0
  737. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/config.py +0 -0
  738. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/data.py +0 -0
  739. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/encoding.py +0 -0
  740. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/enums.py +0 -0
  741. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/errors.py +0 -0
  742. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/functools.py +0 -0
  743. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/idgen.py +0 -0
  744. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/imports.py +0 -0
  745. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/itertools.py +0 -0
  746. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/json.py +0 -0
  747. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/naming.py +0 -0
  748. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/nestedstruct.py +0 -0
  749. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/nin.py +0 -0
  750. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/passwords.py +0 -0
  751. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/path.py +0 -0
  752. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/refs.py +0 -0
  753. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/response.py +0 -0
  754. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/schema.py +0 -0
  755. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/scopes.py +0 -0
  756. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/sqlalchemy.py +0 -0
  757. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/sqlite.py +0 -0
  758. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/starlette.py +0 -0
  759. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/streams.py +0 -0
  760. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/tree.py +0 -0
  761. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/types.py +0 -0
  762. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/units.py +0 -0
  763. {spinta-0.2.dev20 → spinta-0.2.dev21}/spinta/utils/url.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spinta
3
- Version: 0.2.dev20
3
+ Version: 0.2.dev21
4
4
  Summary: A platform for describing, extracting, transforming, loading and serving open data.
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "spinta"
3
- version = "0.2dev20"
3
+ version = "0.2dev21"
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"
@@ -0,0 +1,598 @@
1
+ from __future__ import annotations
2
+
3
+ import dataclasses
4
+ from typing import Any
5
+ from typing import Iterable
6
+ from typing import Iterator
7
+ from typing import TypeVar
8
+
9
+ import sqlalchemy as sa
10
+
11
+ from multipledispatch import dispatch
12
+
13
+ from spinta import commands
14
+ from spinta import exceptions
15
+ from spinta import spyna
16
+ from spinta.auth import authorized
17
+ from spinta.backends import Backend
18
+ from spinta.backends.components import SelectTree
19
+ from spinta.backends.postgresql.helpers import get_pg_name
20
+ from spinta.commands import build_full_response
21
+ from spinta.components import Config, DataItem
22
+ from spinta.core.enums import Action
23
+ from spinta.components import Component
24
+ from spinta.components import Context
25
+ from spinta.components import Model
26
+ from spinta.components import Namespace
27
+ from spinta.components import Property
28
+ from spinta.exceptions import BackendUnavailable
29
+ from spinta.types.datatype import DataType, Denorm
30
+ from spinta.utils.data import take
31
+ from spinta.backends.constants import TableType, BackendOrigin
32
+
33
+
34
+ from sqlalchemy.dialects import postgresql
35
+
36
+ pg_identifier_preparer = postgresql.dialect().identifier_preparer
37
+
38
+
39
+ def validate_and_return_transaction(context: Context, backend: Backend, **kwargs):
40
+ if not backend.available:
41
+ backend.available = commands.wait(context, backend)
42
+
43
+ # Backend is still unavailable
44
+ if not backend.available:
45
+ raise BackendUnavailable(backend)
46
+
47
+ return backend.transaction(**kwargs)
48
+
49
+
50
+ def validate_and_return_begin(context: Context, backend: Backend, **kwargs):
51
+ if not backend.available:
52
+ backend.available = commands.wait(context, backend)
53
+
54
+ # Backend is still unavailable
55
+ if not backend.available:
56
+ raise BackendUnavailable(backend)
57
+
58
+ return backend.begin(**kwargs)
59
+
60
+
61
+ def load_backend(
62
+ context: Context, component: Component, name: str, origin: BackendOrigin, data: dict[str, str]
63
+ ) -> Backend:
64
+ config = context.get("config")
65
+ type_ = data.get("type")
66
+ if not type_:
67
+ raise exceptions.RequiredConfigParam(
68
+ component,
69
+ name=f"backends.{name}.type",
70
+ )
71
+ if type_ not in config.components["backends"]:
72
+ raise exceptions.BackendNotFound(component, name=type_)
73
+ Backend_ = config.components["backends"][type_]
74
+ backend: Backend = Backend_()
75
+ backend.type = type_
76
+ backend.name = name
77
+ backend.origin = origin
78
+ backend.config = data
79
+ load_query_builder_class(config, backend)
80
+ load_result_builder_class(config, backend)
81
+ commands.load(context, backend, data)
82
+ return backend
83
+
84
+
85
+ def get_select_tree(
86
+ context: Context,
87
+ action: Action,
88
+ select: list[str] | None,
89
+ ) -> SelectTree:
90
+ if isinstance(select, dict):
91
+ select = list(select.keys())
92
+
93
+ select = _apply_always_show_id(context, action, select)
94
+ if select is None and action in (Action.GETALL, Action.SEARCH):
95
+ # If select is not given, select everything.
96
+ select = {"*": {}}
97
+ return flat_select_to_nested(select)
98
+
99
+
100
+ def _apply_always_show_id(
101
+ context: Context,
102
+ action: Action,
103
+ select: list[str] | None,
104
+ ) -> list[str] | None:
105
+ if action in (Action.GETALL, Action.SEARCH):
106
+ config = context.get("config")
107
+ if config.always_show_id:
108
+ if select is None:
109
+ return ["_id"]
110
+ elif "_id" not in select:
111
+ return ["_id"] + select
112
+ return select
113
+
114
+
115
+ def get_select_prop_names(
116
+ context: Context,
117
+ node: Model | Property | DataType,
118
+ props: dict[str, Property],
119
+ action: Action,
120
+ select: SelectTree,
121
+ *,
122
+ # If False, do not check if client has access to this property.
123
+ auth: bool = True,
124
+ # Allowed reserved property names.
125
+ reserved: list[str] = None,
126
+ # If False, do not include Denorm type props
127
+ include_denorm_props: bool = True,
128
+ ) -> list[str]:
129
+ known = set(reserved or []) | set(take(props))
130
+ check_unknown_props(node, select, known)
131
+
132
+ if select is None or "*" in select:
133
+ return [
134
+ p.name
135
+ for p in props.values()
136
+ if (
137
+ not p.name.startswith("_")
138
+ and not p.hidden
139
+ and (not auth or authorized(context, p, action))
140
+ and (include_denorm_props or not isinstance(p.dtype, Denorm))
141
+ )
142
+ ]
143
+ else:
144
+ return list(select)
145
+
146
+
147
+ def select_model_props(
148
+ model: Model,
149
+ prop_names: list[str],
150
+ value: dict,
151
+ select: SelectTree,
152
+ reserved: list[str],
153
+ ) -> Iterator[
154
+ tuple[
155
+ Property | str,
156
+ Any,
157
+ SelectTree,
158
+ ]
159
+ ]:
160
+ yield from select_props(
161
+ model,
162
+ reserved,
163
+ model.properties,
164
+ value,
165
+ select,
166
+ )
167
+ yield from select_props(
168
+ model,
169
+ prop_names,
170
+ model.properties,
171
+ value,
172
+ select,
173
+ reserved=False,
174
+ )
175
+
176
+
177
+ T = TypeVar("T")
178
+
179
+
180
+ def select_props(
181
+ node: Namespace | Model | Property,
182
+ keys: Iterable[str],
183
+ props: dict[str, Property],
184
+ value: dict[str, T],
185
+ select: SelectTree,
186
+ *,
187
+ reserved: bool = True,
188
+ ) -> Iterator[
189
+ tuple[
190
+ Property | str,
191
+ T,
192
+ SelectTree,
193
+ ]
194
+ ]:
195
+ for key, val, sel in select_keys(keys, value, select, reserved=reserved):
196
+ prop = _select_prop(key, props, node)
197
+ if prop:
198
+ yield prop, val, sel
199
+
200
+
201
+ def select_only_props(
202
+ node: Namespace | Model | Property,
203
+ keys: Iterable[str],
204
+ props: dict[str, Property],
205
+ select: SelectTree,
206
+ *,
207
+ reserved: bool = True,
208
+ ) -> Iterator[
209
+ tuple[
210
+ Property | str,
211
+ SelectTree,
212
+ ]
213
+ ]:
214
+ for key, sel in select_only_keys(keys, select, reserved=reserved):
215
+ prop = _select_prop(key, props, node)
216
+ if prop:
217
+ yield prop, sel
218
+
219
+
220
+ def _select_prop(
221
+ key: str,
222
+ props: dict[str, Property],
223
+ node: Namespace | Model | Property,
224
+ ) -> Property | None:
225
+ if not (prop := props.get(key)) or prop.hidden:
226
+ return None
227
+
228
+ return prop
229
+
230
+
231
+ def select_keys(
232
+ keys: Iterable[str],
233
+ value: dict[str, T],
234
+ select: SelectTree,
235
+ *,
236
+ reserved: bool = True,
237
+ ) -> Iterator[
238
+ tuple[
239
+ str,
240
+ T,
241
+ SelectTree,
242
+ ]
243
+ ]:
244
+ for key, sel in select_only_keys(keys, select, reserved=reserved):
245
+ if select is None and key not in value:
246
+ # Omit all keys if they are not present in value, this is a common
247
+ # case in PATCH requests.
248
+ continue
249
+
250
+ if key in value:
251
+ val = value[key]
252
+ else:
253
+ val = None
254
+
255
+ yield key, val, sel
256
+
257
+
258
+ def select_only_keys(
259
+ keys: Iterable[str],
260
+ select: SelectTree,
261
+ *,
262
+ reserved: bool = True,
263
+ ) -> Iterator[
264
+ tuple[
265
+ str,
266
+ SelectTree,
267
+ ]
268
+ ]:
269
+ for key in keys:
270
+ if reserved is False and key.startswith("_"):
271
+ continue
272
+
273
+ if select is None:
274
+ sel = None
275
+ elif "*" in select:
276
+ sel = select["*"]
277
+ elif key in select:
278
+ sel = select[key]
279
+ else:
280
+ continue
281
+
282
+ if sel is not None and sel == {}:
283
+ sel = {"*": {}}
284
+
285
+ yield key, sel
286
+
287
+
288
+ # FIXME: We should check select list at the very beginning of
289
+ # request, not when returning results.
290
+ def check_unknown_props(
291
+ node: Model | Property | DataType,
292
+ select: Iterable[str] | None,
293
+ known: Iterable[str],
294
+ ):
295
+ unknown_properties = set(select or []) - set(known) - {"*"}
296
+ if unknown_properties:
297
+ raise exceptions.MultipleErrors(
298
+ exceptions.FieldNotInResource(node, property=prop) for prop in sorted(unknown_properties)
299
+ )
300
+
301
+
302
+ def flat_select_to_nested(select: list[str] | None) -> SelectTree:
303
+ """
304
+ >>> flat_select_to_nested(None)
305
+
306
+ >>> flat_select_to_nested(['foo.bar'])
307
+ {'foo': {'bar': {}}}
308
+
309
+ """
310
+ if select is None:
311
+ return None
312
+
313
+ res = {}
314
+ for v in select:
315
+ if isinstance(v, dict):
316
+ v = spyna.unparse(v)
317
+ names = v.split(".")
318
+ vref = res
319
+ for name in names:
320
+ if name not in vref:
321
+ vref[name] = {}
322
+ vref = vref[name]
323
+
324
+ return res
325
+
326
+
327
+ def get_model_reserved_props(action: Action, include_page: bool) -> list[str]:
328
+ if action == Action.GETALL:
329
+ reserved = ["_type", "_id", "_revision"]
330
+ elif action == Action.SEARCH:
331
+ reserved = ["_type", "_id", "_revision", "_base"]
332
+ elif action == Action.CHANGES:
333
+ return ["_cid", "_created", "_op", "_id", "_txn", "_revision", "_same_as"]
334
+ elif action == Action.MOVE:
335
+ return ["_type", "_revision", "_id", "_same_as"]
336
+ else:
337
+ reserved = ["_type", "_id", "_revision"]
338
+ if include_page:
339
+ reserved.append("_page")
340
+ return reserved
341
+
342
+
343
+ def get_ns_reserved_props(action: Action) -> list[str]:
344
+ return []
345
+
346
+
347
+ @dataclasses.dataclass
348
+ class TableIdentifier:
349
+ """
350
+ Represents a table identifier across logical (app) and PostgreSQL layers.
351
+
352
+ It builds derived names used for internal logic and SQL queries, including
353
+ schema-qualified and escaped identifiers.
354
+
355
+ Attributes:
356
+ schema (str | None): Logical schema/namespace (e.g. "datasets/gov/rc").
357
+ base_name (str): Base table name (e.g. "Building").
358
+ table_type (TableType): Table type suffix (default: TableType.MAIN).
359
+ table_arg (str | None): Optional argument appended used for table types that require property.
360
+ default_pg_schema (str | None): Fallback PG schema if schema is not given.
361
+
362
+ logical_name (str): Computed name (base + type + optional arg).
363
+ Example: "Building/:list/apartments"
364
+ logical_qualified_name (str): Logical name with schema (dataset).
365
+ Example: "datasets/gov/rc/Building/:list/apartments"
366
+
367
+ pg_table_name (str): PG-safe (compressed) table name from logical_name.
368
+ pg_schema_name (str | None): PG-safe (compressed) schema name.
369
+ pg_qualified_name (str): PG-safe (compressed) schema with table name.
370
+ Example: "datasets/gov/rc.Building/:list/apartments" (unescaped).
371
+ pg_escaped_qualified_name (str): Quoted version of pg_qualified_name, used for queries.
372
+ Example: '"datasets/gov/rc"."Building/:list/apartments"' (escaped).
373
+
374
+ Example:
375
+ >>> TableIdentifier("datasets/gov/rc", "Buildings", TableType.LIST, "apartments")
376
+ # logical_qualified_name: "datasets/gov/rc/Buildings/:list/apartments"
377
+ # pg_qualified_name: "datasets/gov/rc.Building/:list/apartments"
378
+
379
+ >>> TableIdentifier("datasets/gov/rc", "Buildings")
380
+ # logical_qualified_name: "datasets/gov/rc/Buildings"
381
+ # pg_qualified_name: "datasets/gov/rc.Building"
382
+
383
+ >>> TableIdentifier("datasets/gov/rc/very/long/dataset/name/that/does/not/fit/withing/limits", "Buildings")
384
+ # logical_qualified_name: "datasets/gov/rc/very/long/dataset/name/that/does/not/fit/withing/limits/Buildings"
385
+ # pg_qualified_name: "datasets/gov/rc/very/long/dataset/nam_e5985b69_t/withing/limits.Building"
386
+ """
387
+
388
+ schema: str | None
389
+ base_name: str
390
+ table_type: TableType = dataclasses.field(default=TableType.MAIN)
391
+ table_arg: str | None = dataclasses.field(default=None)
392
+ default_pg_schema: str | None = dataclasses.field(default=None)
393
+
394
+ logical_name: str = dataclasses.field(init=False)
395
+ # Name with namespace connected with '/', like it is used with Model class
396
+ logical_qualified_name: str = dataclasses.field(init=False)
397
+
398
+ pg_table_name: str = dataclasses.field(init=False)
399
+ pg_schema_name: str | None = dataclasses.field(init=False)
400
+ # Used for hashed schema and table names
401
+ pg_qualified_name: str = dataclasses.field(init=False)
402
+ # Escaped qualified name, used for queries
403
+ pg_escaped_qualified_name: str = dataclasses.field(init=False)
404
+
405
+ def __post_init__(self):
406
+ self.logical_name = self.base_name + self.table_type.value
407
+ if self.table_arg:
408
+ self.logical_name += "/" + self.table_arg
409
+
410
+ self.logical_qualified_name = f"{self.schema}/{self.logical_name}" if self.schema else self.logical_name
411
+
412
+ self.pg_table_name = get_pg_name(self.logical_name)
413
+ self.pg_schema_name = get_pg_name(self.schema) if self.schema else self.default_pg_schema
414
+ self.pg_qualified_name = (
415
+ f"{self.pg_schema_name}.{self.pg_table_name}" if self.pg_schema_name else self.pg_table_name
416
+ )
417
+ self.pg_escaped_qualified_name = (
418
+ f"{pg_identifier_preparer.quote(self.pg_schema_name)}.{pg_identifier_preparer.quote(self.pg_table_name)}"
419
+ if self.pg_schema_name
420
+ else pg_identifier_preparer.quote(self.pg_table_name)
421
+ )
422
+
423
+ def change_table_type(self, new_type: TableType, table_arg: str | None = None) -> "TableIdentifier":
424
+ return dataclasses.replace(self, table_type=new_type, table_arg=table_arg)
425
+
426
+ def apply_removed_prefix(self, remove_model_only: bool = False) -> "TableIdentifier":
427
+ if remove_model_only or not self.table_arg:
428
+ if not self.base_name.startswith("__"):
429
+ return dataclasses.replace(self, base_name=f"__{self.base_name}")
430
+ return self
431
+
432
+ if not self.table_arg.startswith("__"):
433
+ return dataclasses.replace(self, table_arg=f"__{self.table_arg}")
434
+ return self
435
+
436
+
437
+ @dispatch(str)
438
+ def get_table_identifier(item: str, **kwargs) -> TableIdentifier:
439
+ schema, model_name, table_type, table_arg = split_logical_name(item)
440
+ return TableIdentifier(schema=schema, base_name=model_name, table_type=table_type, table_arg=table_arg, **kwargs)
441
+
442
+
443
+ @dispatch(sa.Table)
444
+ def get_table_identifier(item: sa.Table, **kwargs) -> TableIdentifier:
445
+ if not item.comment:
446
+ return TableIdentifier(schema=item.schema, base_name=item.name, **kwargs)
447
+ if item.schema not in ("public", None):
448
+ return get_table_identifier(item.comment, **kwargs)
449
+
450
+ schema, model_name, table_type, table_arg = split_logical_name(item.comment)
451
+ return TableIdentifier(
452
+ schema=None,
453
+ base_name=f"{schema}/{model_name}" if schema else model_name,
454
+ table_type=table_type,
455
+ table_arg=table_arg,
456
+ **kwargs,
457
+ )
458
+
459
+
460
+ @dispatch((Model, Property))
461
+ def get_table_identifier(node: Model | Property, **kwargs) -> TableIdentifier:
462
+ return get_table_identifier(node, TableType.MAIN, **kwargs)
463
+
464
+
465
+ @dispatch((Model, Property), TableType)
466
+ def get_table_identifier(
467
+ node: Model | Property, table_type: TableType, table_arg: str = None, **kwargs
468
+ ) -> TableIdentifier:
469
+ model = node if isinstance(node, Model) else node.model
470
+
471
+ schema = model.ns.name if model.ns else None
472
+ base_name = model.get_name_without_ns()
473
+
474
+ if isinstance(node, Property) and table_type in (TableType.LIST, TableType.FILE):
475
+ table_arg = node.place
476
+
477
+ return TableIdentifier(schema, base_name, table_type, table_arg, **kwargs)
478
+
479
+
480
+ def get_table_name(
481
+ node: Model | Property,
482
+ ttype: TableType = TableType.MAIN,
483
+ ) -> str:
484
+ if isinstance(node, Model):
485
+ model = node
486
+ else:
487
+ model = node.model
488
+ if ttype in (TableType.LIST, TableType.FILE):
489
+ name = model.model_type() + ttype.value + "/" + node.place
490
+ else:
491
+ name = model.model_type() + ttype.value
492
+ return name
493
+
494
+
495
+ def split_table_name(full_name: str) -> tuple[str | None, str]:
496
+ parts = full_name.split(".", maxsplit=1)
497
+ if len(parts) == 1:
498
+ return None, parts[0]
499
+ return parts[0], parts[1]
500
+
501
+
502
+ def split_logical_name(full_name: str) -> tuple[str | None, str, TableType, str | None]:
503
+ base_name, table_type, property_name = extract_table_data_from_logical_name(full_name)
504
+ parts = base_name.split("/")
505
+ if len(parts) == 1:
506
+ return None, parts[0], table_type, property_name
507
+
508
+ for i, part in enumerate(parts):
509
+ if part[0].isupper() or (part[:2] == "__" and part[2].isupper()):
510
+ namespace = "/".join(parts[:i])
511
+ model = "/".join(parts[i:])
512
+ return namespace, model, table_type, property_name
513
+ return None, base_name, table_type, property_name
514
+
515
+
516
+ def load_query_builder_class(config: Config, backend: Backend):
517
+ if backend.query_builder_type is None:
518
+ return
519
+
520
+ backend.query_builder_class = config.components.get("querybuilders")[backend.query_builder_type]
521
+
522
+
523
+ def load_result_builder_class(config: Config, backend: Backend):
524
+ if backend.result_builder_type is None:
525
+ return
526
+
527
+ backend.result_builder_class = config.components.get("resultbuilders")[backend.result_builder_type]
528
+
529
+
530
+ def prepare_response(
531
+ context: Context,
532
+ data: DataItem,
533
+ ) -> (DataItem, dict):
534
+ if data.action == Action.UPDATE:
535
+ # Minor optimisation: if we querying subresource, then build
536
+ # response only for the subresource tree, do not walk through
537
+ # whole model property tree.
538
+ if data.prop:
539
+ dtype = data.prop.dtype
540
+ patch = data.patch.get(data.prop.name, {})
541
+ saved = data.saved.get(data.prop.name, {})
542
+ else:
543
+ dtype = data.model
544
+ patch = take(data.patch)
545
+ saved = take(data.saved)
546
+
547
+ resp = build_full_response(
548
+ context,
549
+ dtype,
550
+ patch=patch,
551
+ saved=saved,
552
+ )
553
+
554
+ # When querying subresources, response still must be enclosed with
555
+ # the subresource key.
556
+ if data.prop:
557
+ resp = {
558
+ data.prop.name: resp,
559
+ }
560
+ elif data.patch:
561
+ resp = data.patch
562
+ else:
563
+ resp = {}
564
+ return resp
565
+
566
+
567
+ def extract_table_data_from_logical_name(table_name: str) -> tuple[str | None, TableType | None, str | None]:
568
+ """
569
+ Extracts the main table name, table type, and an optional property suffix from a logical
570
+ table name string. It parses the given logical table name and determines whether it belongs
571
+ to the main table or some specific table type. If a specific type is found, it splits the
572
+ table name into its components.
573
+
574
+ Parameters:
575
+ table_name (str): The logical table name string that needs to be processed.
576
+
577
+ Returns:
578
+ tuple: A tuple containing:
579
+ - str | None: The main table name.
580
+ - TableType | None: The type of the table, which can be `MAIN` or other enum members of
581
+ `TableType`.
582
+ - str | None: A property suffix string if present in the logical table name, or
583
+ None otherwise.
584
+ """
585
+ if "/:" not in table_name:
586
+ return table_name, TableType.MAIN, None
587
+
588
+ for table_type in TableType:
589
+ if table_type is TableType.MAIN:
590
+ continue
591
+
592
+ if table_type.value in table_name:
593
+ data = table_name.split(table_type.value, 1)
594
+ if data[1]:
595
+ return data[0], table_type, data[1][1:] # skip /property slash
596
+ return data[0], table_type, None
597
+
598
+ return None, None, None
@@ -2,12 +2,12 @@ from spinta import commands
2
2
  from spinta.components import Context
3
3
  from spinta.manifests.components import Manifest
4
4
  from spinta.backends.constants import TableType
5
- from spinta.backends.helpers import get_table_name
5
+ from spinta.backends.helpers import get_table_identifier
6
6
  from spinta.backends.memory.components import Memory
7
7
 
8
8
 
9
9
  @commands.prepare.register(Context, Memory, Manifest)
10
10
  def prepare(context: Context, backend: Memory, manifest: Manifest, **kwargs):
11
11
  for model in commands.get_models(context, manifest).values():
12
- backend.create(get_table_name(model))
13
- backend.create(get_table_name(model, TableType.CHANGELOG))
12
+ backend.create(get_table_identifier(model).logical_qualified_name)
13
+ backend.create(get_table_identifier(model, TableType.CHANGELOG).logical_qualified_name)
@@ -16,7 +16,6 @@ def load(
16
16
  backend: Memory,
17
17
  *,
18
18
  into: Manifest = None,
19
- freezed: bool = True,
20
19
  ) -> None:
21
20
  for source in manifest.sync:
22
- commands.load(context, source, into=into or manifest, freezed=freezed)
21
+ commands.load(context, source, into=into or manifest)
@@ -7,13 +7,13 @@ from spinta.components import Model
7
7
  from spinta.typing import ObjectData
8
8
  from spinta.backends.memory.components import Memory
9
9
  from spinta.backends.constants import TableType
10
- from spinta.backends.helpers import get_table_name
10
+ from spinta.backends.helpers import get_table_identifier
11
11
 
12
12
 
13
13
  @commands.getall.register(Context, Model, Memory)
14
14
  def getall(context: Context, model: Model, db: Memory, *, query: Expr = None, **kwargs) -> Iterator[ObjectData]:
15
- table = get_table_name(model)
16
- return db.data[table].values()
15
+ table = get_table_identifier(model)
16
+ return db.data[table.logical_qualified_name].values()
17
17
 
18
18
 
19
19
  @commands.getone.register(Context, Model, Memory)
@@ -24,8 +24,8 @@ def getone(
24
24
  *,
25
25
  id_: str,
26
26
  ) -> ObjectData:
27
- table = get_table_name(model)
28
- return db.data[table][id_]
27
+ table = get_table_identifier(model)
28
+ return db.data[table.logical_qualified_name][id_]
29
29
 
30
30
 
31
31
  @commands.changes.register(Context, Model, Memory)
@@ -38,5 +38,5 @@ def changes(
38
38
  limit: int = 100,
39
39
  offset: int = -10,
40
40
  ):
41
- table = get_table_name(model, TableType.CHANGELOG)
42
- return db.data[table].values()
41
+ table = get_table_identifier(model, TableType.CHANGELOG)
42
+ return db.data[table.logical_qualified_name].values()
@@ -2,6 +2,8 @@ from spinta import commands
2
2
  from spinta.components import Context
3
3
  from spinta.backends.postgresql.components import PostgreSQL
4
4
 
5
+ import sqlalchemy as sa
6
+
5
7
 
6
8
  @commands.bootstrap.register(Context, PostgreSQL)
7
9
  def bootstrap(context: Context, backend: PostgreSQL):
@@ -10,5 +12,19 @@ def bootstrap(context: Context, backend: PostgreSQL):
10
12
  # line.
11
13
  # TODO: update appropriate rows in _schema and save `applied` date
12
14
  # of schema migration
15
+ validated_schemas = []
13
16
  with backend.engine.connect().execution_options(isolation_level="AUTOCOMMIT") as conn:
17
+ for table in backend.tables.values():
18
+ if not (schema := table.schema):
19
+ continue
20
+
21
+ if schema in validated_schemas:
22
+ continue
23
+
24
+ if conn.dialect.has_schema(conn, schema):
25
+ validated_schemas.append(schema)
26
+ continue
27
+
28
+ conn.execute(sa.schema.CreateSchema(schema))
29
+ validated_schemas.append(schema)
14
30
  backend.schema.create_all(conn, checkfirst=True)