spinta 0.2.dev25__tar.gz → 0.2.dev26__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.dev25 → spinta-0.2.dev26}/PKG-INFO +1 -1
  2. {spinta-0.2.dev25 → spinta-0.2.dev26}/pyproject.toml +1 -1
  3. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/helpers.py +1 -1
  4. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/load.py +2 -1
  5. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/wait.py +2 -2
  6. spinta-0.2.dev26/spinta/backends/postgresql/sqlalchemy.py +38 -0
  7. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/comment.py +14 -8
  8. spinta-0.2.dev26/spinta/cli/uncomment.py +172 -0
  9. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/components.py +2 -0
  10. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/commands/read.py +5 -1
  11. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/query/components.py +26 -2
  12. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/query/ufuncs.py +33 -26
  13. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/cast.py +89 -19
  14. spinta-0.2.dev26/spinta/datasets/backends/sql/commands/read.py +111 -0
  15. spinta-0.2.dev26/spinta/datasets/backends/sql/helpers.py +61 -0
  16. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/scope/helpers.py +11 -2
  17. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/exceptions.py +17 -0
  18. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/helpers.py +2 -2
  19. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/pytest.py +6 -5
  20. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/helpers.py +53 -3
  21. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/model.py +20 -2
  22. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/urlparams.py +85 -2
  23. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/url.py +10 -0
  24. spinta-0.2.dev25/spinta/backends/postgresql/sqlalchemy.py +0 -19
  25. spinta-0.2.dev25/spinta/cli/uncomment.py +0 -110
  26. spinta-0.2.dev25/spinta/datasets/backends/sql/commands/read.py +0 -161
  27. spinta-0.2.dev25/spinta/datasets/backends/sql/helpers.py +0 -0
  28. {spinta-0.2.dev25 → spinta-0.2.dev26}/LICENSE +0 -0
  29. {spinta-0.2.dev25 → spinta-0.2.dev26}/README.rst +0 -0
  30. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/__init__.py +0 -0
  31. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/__main__.py +0 -0
  32. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/accesslog/__init__.py +0 -0
  33. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/accesslog/file.py +0 -0
  34. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/accesslog/python.py +0 -0
  35. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/adapters/__init__.py +0 -0
  36. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/adapters/rc/__init__.py +0 -0
  37. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/adapters/rc/signature_adapter.py +0 -0
  38. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/adapters/soap_plugins.py +0 -0
  39. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/api/__init__.py +0 -0
  40. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/api/inspect.py +0 -0
  41. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/api/schema.py +0 -0
  42. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/api/validators.py +0 -0
  43. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/asgi.py +0 -0
  44. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/auth.py +0 -0
  45. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/__init__.py +0 -0
  46. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/components.py +0 -0
  47. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/constants.py +0 -0
  48. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/__init__.py +0 -0
  49. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/__init__.py +0 -0
  50. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/bootstrap.py +0 -0
  51. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/changes.py +0 -0
  52. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/decode.py +0 -0
  53. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/encode.py +0 -0
  54. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/init.py +0 -0
  55. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/load.py +0 -0
  56. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/migrate.py +0 -0
  57. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/read.py +0 -0
  58. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/validate.py +0 -0
  59. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/wait.py +0 -0
  60. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/wipe.py +0 -0
  61. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/commands/write.py +0 -0
  62. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/fs/components.py +0 -0
  63. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/__init__.py +0 -0
  64. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/__init__.py +0 -0
  65. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/auth.py +0 -0
  66. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/bootstrap.py +0 -0
  67. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/changes.py +0 -0
  68. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/check.py +0 -0
  69. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/encode.py +0 -0
  70. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/init.py +0 -0
  71. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/load.py +0 -0
  72. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/manifest.py +0 -0
  73. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/read.py +0 -0
  74. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/wait.py +0 -0
  75. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/wipe.py +0 -0
  76. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/commands/write.py +0 -0
  77. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/memory/components.py +0 -0
  78. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/__init__.py +0 -0
  79. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/__init__.py +0 -0
  80. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/bootstrap.py +0 -0
  81. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/changes.py +0 -0
  82. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/encode.py +0 -0
  83. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/init.py +0 -0
  84. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/load.py +0 -0
  85. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/migrate.py +0 -0
  86. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/read.py +0 -0
  87. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/validate.py +0 -0
  88. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/wait.py +0 -0
  89. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/wipe.py +0 -0
  90. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/commands/write.py +0 -0
  91. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/components.py +0 -0
  92. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/helpers.py +0 -0
  93. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/__init__.py +0 -0
  94. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/array/__init__.py +0 -0
  95. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/array/write.py +0 -0
  96. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/file/__init__.py +0 -0
  97. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/file/write.py +0 -0
  98. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/object/__init__.py +0 -0
  99. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/types/object/write.py +0 -0
  100. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/ufuncs/__init__.py +0 -0
  101. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/ufuncs/components.py +0 -0
  102. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/mongo/ufuncs/ufuncs.py +0 -0
  103. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/__init__.py +0 -0
  104. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/__init__.py +0 -0
  105. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/bootstrap.py +0 -0
  106. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/changes.py +0 -0
  107. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/init.py +0 -0
  108. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/load.py +0 -0
  109. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/read.py +0 -0
  110. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/wait.py +0 -0
  111. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/wipe.py +0 -0
  112. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/commands/write.py +0 -0
  113. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/nobackend/components.py +0 -0
  114. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/__init__.py +0 -0
  115. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/__init__.py +0 -0
  116. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/bootstrap.py +0 -0
  117. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/changes.py +0 -0
  118. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/column.py +0 -0
  119. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/encode.py +0 -0
  120. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/init.py +0 -0
  121. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/link.py +0 -0
  122. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/manifest.py +0 -0
  123. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/__init__.py +0 -0
  124. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/constants.py +0 -0
  125. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/migrate.py +0 -0
  126. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/model.py +0 -0
  127. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/property.py +0 -0
  128. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/__init__.py +0 -0
  129. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/array.py +0 -0
  130. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/datatype.py +0 -0
  131. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/file.py +0 -0
  132. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/geometry.py +0 -0
  133. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/object.py +0 -0
  134. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/ref.py +0 -0
  135. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/string.py +0 -0
  136. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/migrate/types/text.py +0 -0
  137. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/read.py +0 -0
  138. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/redirect.py +0 -0
  139. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/summary.py +0 -0
  140. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/validate.py +0 -0
  141. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/wipe.py +0 -0
  142. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/commands/write.py +0 -0
  143. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/components.py +0 -0
  144. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/constants.py +0 -0
  145. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/files.py +0 -0
  146. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/__init__.py +0 -0
  147. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/changes.py +0 -0
  148. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/exceptions.py +0 -0
  149. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/extractors.py +0 -0
  150. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/manifest.py +0 -0
  151. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/__init__.py +0 -0
  152. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/actions.py +0 -0
  153. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/cast.py +0 -0
  154. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/citus.py +0 -0
  155. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/migrate.py +0 -0
  156. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/migrate/name.py +0 -0
  157. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/name.py +0 -0
  158. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/redirect.py +0 -0
  159. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/type.py +0 -0
  160. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/helpers/validate.py +0 -0
  161. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/__init__.py +0 -0
  162. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array/__init__.py +0 -0
  163. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array/init.py +0 -0
  164. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array/wipe.py +0 -0
  165. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array/write.py +0 -0
  166. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array_backref/__init__.py +0 -0
  167. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/array_backref/init.py +0 -0
  168. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/backref/__init__.py +0 -0
  169. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/backref/init.py +0 -0
  170. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/denorm/__init__.py +0 -0
  171. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/denorm/init.py +0 -0
  172. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/external_ref/__init__.py +0 -0
  173. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/external_ref/init.py +0 -0
  174. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/file/__init__.py +0 -0
  175. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/file/init.py +0 -0
  176. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/file/read.py +0 -0
  177. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/file/write.py +0 -0
  178. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/geometry/__init__.py +0 -0
  179. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/geometry/encode.py +0 -0
  180. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/geometry/init.py +0 -0
  181. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/geometry/write.py +0 -0
  182. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/object/__init__.py +0 -0
  183. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/object/init.py +0 -0
  184. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/object/read.py +0 -0
  185. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/object/wipe.py +0 -0
  186. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/ref/__init__.py +0 -0
  187. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/ref/init.py +0 -0
  188. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/ref/validate.py +0 -0
  189. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/text/__init__.py +0 -0
  190. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/types/text/init.py +0 -0
  191. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/__init__.py +0 -0
  192. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/components.py +0 -0
  193. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/query/__init__.py +0 -0
  194. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/query/components.py +0 -0
  195. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  196. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/result/__init__.py +0 -0
  197. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/result/components.py +0 -0
  198. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/result/ufuncs.py +0 -0
  199. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/postgresql/ufuncs/ufuncs.py +0 -0
  200. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/backends/types/__init__.py +0 -0
  201. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/__init__.py +0 -0
  202. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/admin.py +0 -0
  203. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/auth.py +0 -0
  204. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/config.py +0 -0
  205. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/data.py +0 -0
  206. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/get.py +0 -0
  207. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/__init__.py +0 -0
  208. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/__init__.py +0 -0
  209. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/components.py +0 -0
  210. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/registry.py +0 -0
  211. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/__init__.py +0 -0
  212. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/add_local_ids.py +0 -0
  213. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/changelog.py +0 -0
  214. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/citus_shard.py +0 -0
  215. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/deduplicate.py +0 -0
  216. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/enums.py +0 -0
  217. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/admin/scripts/remove_local_ids.py +0 -0
  218. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/auth.py +0 -0
  219. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/data.py +0 -0
  220. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/enums.py +0 -0
  221. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/errors.py +0 -0
  222. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/__init__.py +0 -0
  223. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/__init__.py +0 -0
  224. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/postgresql/__init__.py +0 -0
  225. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/postgresql/commands.py +0 -0
  226. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/postgresql/components.py +0 -0
  227. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/backends/postgresql/helpers.py +0 -0
  228. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/commands.py +0 -0
  229. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/components.py +0 -0
  230. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/export/helpers.py +0 -0
  231. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/manifest.py +0 -0
  232. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/message.py +0 -0
  233. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/migrate.py +0 -0
  234. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/__init__.py +0 -0
  235. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/components.py +0 -0
  236. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/delete.py +0 -0
  237. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/error.py +0 -0
  238. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/read.py +0 -0
  239. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/state.py +0 -0
  240. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/sync.py +0 -0
  241. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/utils.py +0 -0
  242. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/push/write.py +0 -0
  243. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/__init__.py +0 -0
  244. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/components.py +0 -0
  245. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/core.py +0 -0
  246. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/helpers.py +0 -0
  247. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/script/registry.py +0 -0
  248. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/store.py +0 -0
  249. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/__init__.py +0 -0
  250. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/api_helpers.py +0 -0
  251. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/__init__.py +0 -0
  252. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/data_service.py +0 -0
  253. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/dataset.py +0 -0
  254. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/distribution.py +0 -0
  255. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/dsa.py +0 -0
  256. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/synchronization/__init__.py +0 -0
  257. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/synchronization/connection.py +0 -0
  258. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/controllers/synchronization/manifest_catalog_to_agent.py +0 -0
  259. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/enum.py +0 -0
  260. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/sync/helpers.py +0 -0
  261. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/typer.py +0 -0
  262. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/__init__.py +0 -0
  263. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/components.py +0 -0
  264. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/registry.py +0 -0
  265. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/__init__.py +0 -0
  266. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/backends/__init__.py +0 -0
  267. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/__init__.py +0 -0
  268. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/comments.py +0 -0
  269. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/backends/postgresql/schemas.py +0 -0
  270. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/clients.py +0 -0
  271. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/__init__.py +0 -0
  272. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/__init__.py +0 -0
  273. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/helpers.py +0 -0
  274. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/initial_setup.py +0 -0
  275. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/modified_time.py +0 -0
  276. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/keymaps/sqlalchemy/redirect_support.py +0 -0
  277. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/helpers/upgrade/scripts/redirect.py +0 -0
  278. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/init.py +0 -0
  279. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/inspect.py +0 -0
  280. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/keymap.py +0 -0
  281. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/main.py +0 -0
  282. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/manifest.py +0 -0
  283. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/migrate.py +0 -0
  284. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/pii.py +0 -0
  285. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/pull.py +0 -0
  286. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/push.py +0 -0
  287. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/server.py +0 -0
  288. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/show.py +0 -0
  289. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/sync.py +0 -0
  290. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/cli/upgrade.py +0 -0
  291. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/client.py +0 -0
  292. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/__init__.py +0 -0
  293. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/auth.py +0 -0
  294. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/helpers.py +0 -0
  295. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/read.py +0 -0
  296. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/search.py +0 -0
  297. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/version.py +0 -0
  298. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/commands/write.py +0 -0
  299. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/compat.py +0 -0
  300. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/config.py +0 -0
  301. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/config.yml +0 -0
  302. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/__init__.py +0 -0
  303. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/access.py +0 -0
  304. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/config.py +0 -0
  305. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/context.py +0 -0
  306. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/enums.py +0 -0
  307. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/core/ufuncs.py +0 -0
  308. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/__init__.py +0 -0
  309. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/__init__.py +0 -0
  310. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/__init__.py +0 -0
  311. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/__init__.py +0 -0
  312. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/csv/__init__.py +0 -0
  313. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/csv/commands/__init__.py +0 -0
  314. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/csv/commands/read.py +0 -0
  315. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/csv/components.py +0 -0
  316. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/json/__init__.py +0 -0
  317. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/json/commands/__init__.py +0 -0
  318. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/json/commands/read.py +0 -0
  319. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/json/components.py +0 -0
  320. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/memory/__init__.py +0 -0
  321. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/memory/components.py +0 -0
  322. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/__init__.py +0 -0
  323. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/commands/__init__.py +0 -0
  324. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/commands/read.py +0 -0
  325. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/components.py +0 -0
  326. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/__init__.py +0 -0
  327. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/components.py +0 -0
  328. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/soap/ufuncs/ufuncs.py +0 -0
  329. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/xml/__init__.py +0 -0
  330. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/xml/commands/__init__.py +0 -0
  331. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/xml/commands/read.py +0 -0
  332. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/backends/xml/components.py +0 -0
  333. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/commands/__init__.py +0 -0
  334. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/commands/check.py +0 -0
  335. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/components.py +0 -0
  336. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/__init__.py +0 -0
  337. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/components.py +0 -0
  338. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/query/__init__.py +0 -0
  339. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/dataframe/ufuncs/ufuncs.py +0 -0
  340. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/helpers.py +0 -0
  341. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/__init__.py +0 -0
  342. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/commands/__init__.py +0 -0
  343. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/commands/load.py +0 -0
  344. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/commands/wait.py +0 -0
  345. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/notimpl/components.py +0 -0
  346. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/__init__.py +0 -0
  347. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/__init__.py +0 -0
  348. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/helpers.py +0 -0
  349. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/__init__.py +0 -0
  350. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/components.py +0 -0
  351. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/helpers.py +0 -0
  352. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/__init__.py +0 -0
  353. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/__init__.py +0 -0
  354. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/components.py +0 -0
  355. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mariadb/ufuncs/query/ufuncs.py +0 -0
  356. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/__init__.py +0 -0
  357. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/components.py +0 -0
  358. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/helpers.py +0 -0
  359. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/ufuncs/__init__.py +0 -0
  360. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/__init__.py +0 -0
  361. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/components.py +0 -0
  362. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mssql/ufuncs/query/ufuncs.py +0 -0
  363. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/__init__.py +0 -0
  364. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/components.py +0 -0
  365. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/helpers.py +0 -0
  366. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/ufuncs/__init__.py +0 -0
  367. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/__init__.py +0 -0
  368. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/components.py +0 -0
  369. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/mysql/ufuncs/query/ufuncs.py +0 -0
  370. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/__init__.py +0 -0
  371. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/components.py +0 -0
  372. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/helpers.py +0 -0
  373. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/types/__init__.py +0 -0
  374. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/types/geometry/__init__.py +0 -0
  375. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/types/geometry/encode.py +0 -0
  376. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/ufuncs/__init__.py +0 -0
  377. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/__init__.py +0 -0
  378. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/components.py +0 -0
  379. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/oracle/ufuncs/query/ufuncs.py +0 -0
  380. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/__init__.py +0 -0
  381. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/components.py +0 -0
  382. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/helpers.py +0 -0
  383. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/__init__.py +0 -0
  384. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/__init__.py +0 -0
  385. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/components.py +0 -0
  386. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/postgresql/ufuncs/query/ufuncs.py +0 -0
  387. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/__init__.py +0 -0
  388. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/base.py +0 -0
  389. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/commands/__init__.py +0 -0
  390. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/commands/cast.py +0 -0
  391. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/commands/load.py +0 -0
  392. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/commands/read.py +0 -0
  393. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/components.py +0 -0
  394. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/constants.py +0 -0
  395. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/dialect.py +0 -0
  396. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/formats.py +0 -0
  397. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/helpers.py +0 -0
  398. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/identifier.py +0 -0
  399. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/introspection.py +0 -0
  400. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/log4j.properties +0 -0
  401. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/types.py +0 -0
  402. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/ufuncs/__init__.py +0 -0
  403. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/__init__.py +0 -0
  404. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/components.py +0 -0
  405. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sas/ufuncs/query/ufuncs.py +0 -0
  406. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/__init__.py +0 -0
  407. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/components.py +0 -0
  408. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/helpers.py +0 -0
  409. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/__init__.py +0 -0
  410. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/__init__.py +0 -0
  411. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/components.py +0 -0
  412. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/backends/sqlite/ufuncs/query/ufuncs.py +0 -0
  413. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/__init__.py +0 -0
  414. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/bootstrap.py +0 -0
  415. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/column.py +0 -0
  416. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/init.py +0 -0
  417. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/load.py +0 -0
  418. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/commands/wait.py +0 -0
  419. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/components.py +0 -0
  420. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/__init__.py +0 -0
  421. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/components.py +0 -0
  422. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/query/__init__.py +0 -0
  423. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/query/components.py +0 -0
  424. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/query/helpers.py +0 -0
  425. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/query/ufuncs.py +0 -0
  426. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/result/__init__.py +0 -0
  427. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/result/components.py +0 -0
  428. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/result/ufuncs.py +0 -0
  429. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sql/ufuncs/ufuncs.py +0 -0
  430. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/__init__.py +0 -0
  431. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/commands/__init__.py +0 -0
  432. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/commands/inspect.py +0 -0
  433. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/commands/load.py +0 -0
  434. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/commands/wait.py +0 -0
  435. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/components.py +0 -0
  436. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/ufuncs/__init__.py +0 -0
  437. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/ufuncs/components.py +0 -0
  438. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/sqldump/ufuncs/ufuncs.py +0 -0
  439. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/wsdl/__init__.py +0 -0
  440. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/wsdl/commads/__init__.py +0 -0
  441. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/wsdl/commads/read.py +0 -0
  442. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/backends/wsdl/components.py +0 -0
  443. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/__init__.py +0 -0
  444. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/check.py +0 -0
  445. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/error.py +0 -0
  446. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/inspect.py +0 -0
  447. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/link.py +0 -0
  448. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/load.py +0 -0
  449. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/commands/wipe.py +0 -0
  450. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/components.py +0 -0
  451. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/enums.py +0 -0
  452. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/helpers.py +0 -0
  453. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/__init__.py +0 -0
  454. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/commands/__init__.py +0 -0
  455. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/commands/manifest.py +0 -0
  456. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/commands/merge.py +0 -0
  457. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/components.py +0 -0
  458. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/inspect/helpers.py +0 -0
  459. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/__init__.py +0 -0
  460. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/components.py +0 -0
  461. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/redis.py +0 -0
  462. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/sqlalchemy.py +0 -0
  463. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/keymaps/sync.py +0 -0
  464. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/datasets/utils.py +0 -0
  465. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/__init__.py +0 -0
  466. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/comments/__init__.py +0 -0
  467. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/comments/components.py +0 -0
  468. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/comments/helpers.py +0 -0
  469. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/__init__.py +0 -0
  470. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/commands.py +0 -0
  471. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/components.py +0 -0
  472. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/helpers.py +0 -0
  473. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/enum/ufuncs.py +0 -0
  474. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/lang/__init__.py +0 -0
  475. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/lang/components.py +0 -0
  476. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/lang/helpers.py +0 -0
  477. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/param/__init__.py +0 -0
  478. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/param/components.py +0 -0
  479. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/param/helpers.py +0 -0
  480. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/param/ufuncs.py +0 -0
  481. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/__init__.py +0 -0
  482. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/commands/__init__.py +0 -0
  483. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/commands/load.py +0 -0
  484. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/components.py +0 -0
  485. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/prefix/helpers.py +0 -0
  486. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/scope/__init__.py +0 -0
  487. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/scope/components.py +0 -0
  488. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dimensions/scope/ufuncs.py +0 -0
  489. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/dispatcher.py +0 -0
  490. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/fetcher.py +0 -0
  491. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/__init__.py +0 -0
  492. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/ascii/__init__.py +0 -0
  493. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/ascii/commands.py +0 -0
  494. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/ascii/components.py +0 -0
  495. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/ascii/helpers.py +0 -0
  496. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/components.py +0 -0
  497. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/csv/__init__.py +0 -0
  498. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/csv/commands.py +0 -0
  499. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/csv/components.py +0 -0
  500. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/helpers.py +0 -0
  501. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/html/__init__.py +0 -0
  502. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/html/commands.py +0 -0
  503. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/html/components.py +0 -0
  504. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/html/helpers.py +0 -0
  505. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/json/__init__.py +0 -0
  506. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/json/commands.py +0 -0
  507. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/json/components.py +0 -0
  508. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/jsonlines/__init__.py +0 -0
  509. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/jsonlines/commands.py +0 -0
  510. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/jsonlines/components.py +0 -0
  511. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/rdf/commands.py +0 -0
  512. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/rdf/components.py +0 -0
  513. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/xlsx/__init__.py +0 -0
  514. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/xlsx/commands.py +0 -0
  515. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/formats/xlsx/components.py +0 -0
  516. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/hacks/__init__.py +0 -0
  517. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/hacks/spyna.py +0 -0
  518. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/hacks/urlparams.py +0 -0
  519. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/handlers.py +0 -0
  520. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/logging_config.py +0 -0
  521. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifest/_ns.yml +0 -0
  522. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifest/_schema/version.yml +0 -0
  523. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifest/_schema.yml +0 -0
  524. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifest/_txn.yml +0 -0
  525. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/__init__.py +0 -0
  526. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/__init__.py +0 -0
  527. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/__init__.py +0 -0
  528. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/bootstrap.py +0 -0
  529. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/configure.py +0 -0
  530. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/load.py +0 -0
  531. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/manifest.py +0 -0
  532. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/migrate.py +0 -0
  533. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/commands/sync.py +0 -0
  534. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/components.py +0 -0
  535. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/backend/helpers.py +0 -0
  536. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/__init__.py +0 -0
  537. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/auth.py +0 -0
  538. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/check.py +0 -0
  539. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/error.py +0 -0
  540. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/init.py +0 -0
  541. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/inspect.py +0 -0
  542. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/link.py +0 -0
  543. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/load.py +0 -0
  544. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/manifest.py +0 -0
  545. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/migrate.py +0 -0
  546. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/commands/read.py +0 -0
  547. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/components.py +0 -0
  548. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/__init__.py +0 -0
  549. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/commands/__init__.py +0 -0
  550. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/commands/configure.py +0 -0
  551. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/commands/load.py +0 -0
  552. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/components.py +0 -0
  553. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/dict/helpers.py +0 -0
  554. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/helpers.py +0 -0
  555. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/__init__.py +0 -0
  556. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/commands/__init__.py +0 -0
  557. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/commands/configure.py +0 -0
  558. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/commands/load.py +0 -0
  559. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal/components.py +0 -0
  560. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/__init__.py +0 -0
  561. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/__init__.py +0 -0
  562. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/auth.py +0 -0
  563. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/backend.py +0 -0
  564. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/bootstrap.py +0 -0
  565. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/configure.py +0 -0
  566. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/load.py +0 -0
  567. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/manifest.py +0 -0
  568. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/commands/read.py +0 -0
  569. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/components.py +0 -0
  570. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/internal_sql/helpers.py +0 -0
  571. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/__init__.py +0 -0
  572. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/commands/__init__.py +0 -0
  573. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/commands/configure.py +0 -0
  574. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/commands/load.py +0 -0
  575. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/memory/components.py +0 -0
  576. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/mermaid/__init__.py +0 -0
  577. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/mermaid/components.py +0 -0
  578. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/mermaid/helpers.py +0 -0
  579. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/__init__.py +0 -0
  580. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/commands/__init__.py +0 -0
  581. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/commands/configure.py +0 -0
  582. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/commands/load.py +0 -0
  583. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/components.py +0 -0
  584. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/helpers.py +0 -0
  585. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/openapi_config.py +0 -0
  586. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/open_api/openapi_generator.py +0 -0
  587. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/commands/bootstrap.py +0 -0
  588. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/commands/configure.py +0 -0
  589. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/commands/load.py +0 -0
  590. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/components.py +0 -0
  591. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/rdf/helpers.py +0 -0
  592. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/__init__.py +0 -0
  593. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/commands/__init__.py +0 -0
  594. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/commands/configure.py +0 -0
  595. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/commands/load.py +0 -0
  596. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/components.py +0 -0
  597. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/sql/helpers.py +0 -0
  598. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/__init__.py +0 -0
  599. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/commands/__init__.py +0 -0
  600. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/commands/bootstrap.py +0 -0
  601. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/commands/configure.py +0 -0
  602. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/commands/load.py +0 -0
  603. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/components.py +0 -0
  604. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/constants.py +0 -0
  605. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/formats/__init__.py +0 -0
  606. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/tabular/formats/gsheets.py +0 -0
  607. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/__init__.py +0 -0
  608. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/commands/__init__.py +0 -0
  609. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/commands/configure.py +0 -0
  610. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/commands/load.py +0 -0
  611. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/components.py +0 -0
  612. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd/helpers.py +0 -0
  613. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/xsd2/commands/load.py +0 -0
  614. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/__init__.py +0 -0
  615. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/__init__.py +0 -0
  616. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/bootstrap.py +0 -0
  617. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/configure.py +0 -0
  618. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/load.py +0 -0
  619. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/manifest.py +0 -0
  620. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/migrate.py +0 -0
  621. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/commands/sync.py +0 -0
  622. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/components.py +0 -0
  623. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/manifests/yaml/helpers.py +0 -0
  624. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/methods.py +0 -0
  625. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/middlewares.py +0 -0
  626. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/naming/__init__.py +0 -0
  627. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/naming/components.py +0 -0
  628. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/naming/helpers.py +0 -0
  629. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/naming/ufuncts.py +0 -0
  630. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/nodes.py +0 -0
  631. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/renderer.py +0 -0
  632. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/spyna.py +0 -0
  633. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/templates/base.html +0 -0
  634. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/templates/data.html +0 -0
  635. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/templates/error.html +0 -0
  636. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/templates/form.html +0 -0
  637. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/__init__.py +0 -0
  638. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/citus.py +0 -0
  639. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/cli.py +0 -0
  640. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/client.py +0 -0
  641. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/config.py +0 -0
  642. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/context.py +0 -0
  643. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/csv.py +0 -0
  644. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/data.py +0 -0
  645. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/datasets.py +0 -0
  646. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/dtypes.py +0 -0
  647. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/manifest.py +0 -0
  648. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/migration.py +0 -0
  649. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/push.py +0 -0
  650. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/request.py +0 -0
  651. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/tabular.py +0 -0
  652. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/types/__init__.py +0 -0
  653. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/types/geometry.py +0 -0
  654. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/ufuncs.py +0 -0
  655. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/testing/utils.py +0 -0
  656. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/__init__.py +0 -0
  657. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/array/__init__.py +0 -0
  658. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/array/check.py +0 -0
  659. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/array/link.py +0 -0
  660. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/array/resolve.py +0 -0
  661. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/backref/__init__.py +0 -0
  662. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/backref/link.py +0 -0
  663. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/command.py +0 -0
  664. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/config.py +0 -0
  665. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/datatype.py +0 -0
  666. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/denorm/__init__.py +0 -0
  667. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/denorm/check.py +0 -0
  668. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/denorm/link.py +0 -0
  669. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/file/__init__.py +0 -0
  670. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/file/components.py +0 -0
  671. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/file/decode.py +0 -0
  672. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/file/helpers.py +0 -0
  673. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/__init__.py +0 -0
  674. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/components.py +0 -0
  675. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/constants.py +0 -0
  676. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/helpers.py +0 -0
  677. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/geometry/load.py +0 -0
  678. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/inherit/__init__.py +0 -0
  679. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/inherit/check.py +0 -0
  680. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/namespace.py +0 -0
  681. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/object/__init__.py +0 -0
  682. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/object/check.py +0 -0
  683. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/object/link.py +0 -0
  684. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/partial/__init__.py +0 -0
  685. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/partial/link.py +0 -0
  686. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/ref/__init__.py +0 -0
  687. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/ref/check.py +0 -0
  688. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/ref/link.py +0 -0
  689. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/ref/resolve.py +0 -0
  690. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/store.py +0 -0
  691. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/__init__.py +0 -0
  692. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/check.py +0 -0
  693. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/components.py +0 -0
  694. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/helpers.py +0 -0
  695. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/types/text/load.py +0 -0
  696. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/typing.py +0 -0
  697. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/__init__.py +0 -0
  698. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/binds.py +0 -0
  699. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/changebase/__init__.py +0 -0
  700. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/changebase/components.py +0 -0
  701. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/changebase/helpers.py +0 -0
  702. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/changebase/ufuncs.py +0 -0
  703. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/common.py +0 -0
  704. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/components.py +0 -0
  705. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/helpers.py +0 -0
  706. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/linkbuilder/__init__.py +0 -0
  707. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/linkbuilder/components.py +0 -0
  708. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/linkbuilder/ufuncs.py +0 -0
  709. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/loadbuilder/__init__.py +0 -0
  710. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/loadbuilder/components.py +0 -0
  711. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/loadbuilder/helpers.py +0 -0
  712. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/loadbuilder/ufuncs.py +0 -0
  713. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/propertyresolver/__init__.py +0 -0
  714. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/propertyresolver/components.py +0 -0
  715. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/propertyresolver/ufuncs.py +0 -0
  716. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/querybuilder/__init__.py +0 -0
  717. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/querybuilder/components.py +0 -0
  718. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/querybuilder/helpers.py +0 -0
  719. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/querybuilder/ufuncs.py +0 -0
  720. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/requestparamsbuilder/__init__.py +0 -0
  721. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/requestparamsbuilder/components.py +0 -0
  722. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/requestparamsbuilder/helpers.py +0 -0
  723. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/requestparamsbuilder/ufuncs.py +0 -0
  724. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/resultbuilder/__init__.py +0 -0
  725. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/resultbuilder/components.py +0 -0
  726. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/resultbuilder/helpers.py +0 -0
  727. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/resultbuilder/ufuncs.py +0 -0
  728. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/summaryenv/__init__.py +0 -0
  729. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/summaryenv/components.py +0 -0
  730. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/ufuncs/summaryenv/ufuncs.py +0 -0
  731. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/units/__init__.py +0 -0
  732. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/units/components.py +0 -0
  733. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/units/helpers.py +0 -0
  734. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/__init__.py +0 -0
  735. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/aiotools.py +0 -0
  736. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/changes.py +0 -0
  737. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/collections.py +0 -0
  738. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/config.py +0 -0
  739. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/data.py +0 -0
  740. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/encoding.py +0 -0
  741. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/enums.py +0 -0
  742. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/errors.py +0 -0
  743. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/functools.py +0 -0
  744. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/idgen.py +0 -0
  745. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/imports.py +0 -0
  746. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/itertools.py +0 -0
  747. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/json.py +0 -0
  748. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/naming.py +0 -0
  749. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/nestedstruct.py +0 -0
  750. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/nin.py +0 -0
  751. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/passwords.py +0 -0
  752. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/path.py +0 -0
  753. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/refs.py +0 -0
  754. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/response.py +0 -0
  755. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/schema.py +0 -0
  756. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/scopes.py +0 -0
  757. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/sqlalchemy.py +0 -0
  758. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/sqlite.py +0 -0
  759. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/starlette.py +0 -0
  760. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/streams.py +0 -0
  761. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/tree.py +0 -0
  762. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/types.py +0 -0
  763. {spinta-0.2.dev25 → spinta-0.2.dev26}/spinta/utils/units.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spinta
3
- Version: 0.2.dev25
3
+ Version: 0.2.dev26
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.2dev25"
3
+ version = "0.2dev26"
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"
@@ -91,7 +91,7 @@ def get_select_tree(
91
91
  select = list(select.keys())
92
92
 
93
93
  select = _apply_always_show_id(context, action, select)
94
- if select is None and action in (Action.GETALL, Action.SEARCH):
94
+ if select is None and action in (Action.GETALL, Action.SEARCH, Action.GETONE):
95
95
  # If select is not given, select everything.
96
96
  select = {"*": {}}
97
97
  return flat_select_to_nested(select)
@@ -5,6 +5,7 @@ import sqlalchemy as sa
5
5
  from spinta import commands
6
6
  from spinta.backends.postgresql.components import PostgreSQL
7
7
  from spinta.backends.postgresql.helpers.name import PG_NAMING_CONVENTION
8
+ from spinta.backends.postgresql.sqlalchemy import create_postgresql_engine
8
9
  from spinta.components import Context
9
10
  from spinta.utils.sqlalchemy import get_metadata_naming_convention
10
11
 
@@ -12,7 +13,7 @@ from spinta.utils.sqlalchemy import get_metadata_naming_convention
12
13
  @commands.load.register(Context, PostgreSQL, dict)
13
14
  def load(context: Context, backend: PostgreSQL, config: Dict[str, Any]):
14
15
  backend.dsn = config["dsn"]
15
- backend.engine = sa.create_engine(backend.dsn, echo=False)
16
+ backend.engine = create_postgresql_engine(backend.dsn, echo=False)
16
17
  backend.schema = sa.MetaData(backend.engine, naming_convention=get_metadata_naming_convention(PG_NAMING_CONVENTION))
17
18
  backend.tables = {}
18
19
 
@@ -1,7 +1,7 @@
1
- import sqlalchemy as sa
2
1
  import sqlalchemy.exc
3
2
 
4
3
  from spinta import commands
4
+ from spinta.backends.postgresql.sqlalchemy import create_postgresql_engine
5
5
  from spinta.components import Context
6
6
  from spinta.backends.postgresql.components import PostgreSQL
7
7
 
@@ -10,7 +10,7 @@ from spinta.backends.postgresql.components import PostgreSQL
10
10
  def wait(context: Context, backend: PostgreSQL, *, fail: bool = False) -> bool:
11
11
  rc = context.get("rc")
12
12
  dsn = rc.get("backends", backend.name, "dsn", required=True)
13
- engine = sa.create_engine(dsn, connect_args={"connect_timeout": 0})
13
+ engine = create_postgresql_engine(dsn, connect_args={"connect_timeout": 0})
14
14
  try:
15
15
  conn = engine.connect()
16
16
  except sqlalchemy.exc.OperationalError:
@@ -0,0 +1,38 @@
1
+ import sqlalchemy as sa
2
+
3
+ from sqlalchemy.ext.compiler import compiles
4
+ from sqlalchemy.sql.expression import FunctionElement
5
+ from sqlalchemy.dialects.mssql.base import ischema_names
6
+ from geoalchemy2.types import Geometry
7
+
8
+
9
+ ischema_names["geometry"] = Geometry
10
+
11
+
12
+ class utcnow(FunctionElement):
13
+ inherit_cache = True
14
+ type = sa.DateTime()
15
+
16
+
17
+ @compiles(utcnow, "postgresql")
18
+ def pg_utcnow(element, compiler, **kw):
19
+ return "TIMEZONE('utc', CURRENT_TIMESTAMP)"
20
+
21
+
22
+ def create_postgresql_engine(uri: str, connect_args: dict | None = None, **kwargs) -> sa.engine.Engine:
23
+ default_kwargs = {
24
+ "pool_pre_ping": True,
25
+ "pool_recycle": 900,
26
+ }
27
+
28
+ default_kwargs.update(kwargs)
29
+ default_connect_args = {
30
+ "keepalives": 1,
31
+ "keepalives_idle": 60,
32
+ "keepalives_interval": 10,
33
+ "keepalives_count": 5,
34
+ }
35
+ if connect_args:
36
+ default_connect_args.update(connect_args)
37
+
38
+ return sa.create_engine(uri, connect_args=default_connect_args, **default_kwargs)
@@ -5,15 +5,19 @@ from typer import echo
5
5
 
6
6
  from spinta.cli.helpers.enums import CommentPart
7
7
  from spinta.cli.helpers.store import load_manifest
8
- from spinta.components import Context, Property
8
+ from spinta.components import Context
9
9
  from spinta.core.context import configure_context
10
10
  from spinta.core.enums import Access
11
+ from spinta.dimensions.comments.components import Comment
11
12
  from spinta.manifests.components import Manifest
12
13
  from spinta.manifests.tabular.helpers import datasets_to_tabular
13
14
  from spinta.manifests.tabular.helpers import render_tabular_manifest_rows
14
15
  from spinta.manifests.tabular.helpers import write_tabular_manifest
15
16
 
16
17
 
18
+ RESTORE_COMMENT_PREFIXES = ("update", "insert")
19
+
20
+
17
21
  def comment(
18
22
  ctx: TyperContext,
19
23
  part: CommentPart = Argument(None, help="Part to comment"),
@@ -79,7 +83,7 @@ def _update_systemic_comments(
79
83
  uri: str | None = None,
80
84
  description: str | None = None,
81
85
  ) -> None:
82
- """Update author/uri/description on comment type properties."""
86
+ """Update author/uri/description on systemic restore comments (refs and bases)."""
83
87
  from spinta import commands
84
88
 
85
89
  if all(argument is None for argument in [author, uri, description]):
@@ -87,22 +91,24 @@ def _update_systemic_comments(
87
91
 
88
92
  models = commands.get_models(context, manifest)
89
93
  for model in models.values():
94
+ _patch_restore_comments(model.comments, author=author, uri=uri, description=description)
90
95
  for prop in model.properties.values():
91
- _patch_property_restore_comments(prop, author=author, uri=uri, description=description)
96
+ _patch_restore_comments(prop.comments, author=author, uri=uri, description=description)
92
97
 
93
98
 
94
- def _patch_property_restore_comments(
95
- prop: Property,
99
+ def _patch_restore_comments(
100
+ comments: list[Comment] | None,
96
101
  *,
97
102
  author: str | None,
98
103
  uri: str | None,
99
104
  description: str | None,
100
105
  ) -> None:
101
- if not prop.comments:
106
+ if not comments:
102
107
  return
103
108
 
104
- for comment in prop.comments:
105
- if not comment.prepare or not comment.prepare.startswith("update"):
109
+ for comment in comments:
110
+ prepare = comment.prepare or ""
111
+ if not prepare.startswith(RESTORE_COMMENT_PREFIXES):
106
112
  continue
107
113
 
108
114
  if author is not None:
@@ -0,0 +1,172 @@
1
+ import csv
2
+ import pathlib
3
+ import re
4
+
5
+ from typer import Argument
6
+ from typer import Context as TyperContext
7
+ from typer import Option
8
+ from typer import echo
9
+
10
+ from spinta.components import Context
11
+ from spinta.manifests.tabular.components import MANIFEST_COLUMNS
12
+ from spinta.manifests.tabular.components import ManifestRow
13
+ from spinta.manifests.tabular.helpers import render_tabular_manifest_rows
14
+ from spinta.manifests.tabular.helpers import torow
15
+ from spinta.manifests.tabular.helpers import write_tabular_manifest
16
+
17
+
18
+ UPDATE_FUNCTION = "update"
19
+ COLUMN_TYPE_COMMENT = "comment"
20
+ INSERT_FUNCTION = "insert"
21
+
22
+
23
+ def uncomment(
24
+ ctx: TyperContext,
25
+ uri: str | None = Option(None, "--uri", help="Only restore comments that carry this URI tag"),
26
+ output: str | None = Option(None, "-o", "--output", help="Output tabular manifest in a specified file"),
27
+ manifests: list[str] = Argument(None, help="Source manifest files"),
28
+ ):
29
+ """Restore commented-out properties."""
30
+ context: Context = ctx.obj
31
+ uncomment_manifest(context, uri=uri, output=output, manifests=manifests)
32
+
33
+
34
+ def uncomment_manifest(
35
+ context: Context,
36
+ uri: str | None = None,
37
+ output: str | None = None,
38
+ manifests: list[str] | None = None,
39
+ ) -> None:
40
+ """Read raw CSV rows, remove `update`, `insert` comments, and write the result."""
41
+ rows = _read_raw_manifest_rows(manifests or [])
42
+ result = _uncomment_rows(rows, uri_filter=uri)
43
+ if output:
44
+ write_tabular_manifest(context, output, iter(result))
45
+ else:
46
+ echo(render_tabular_manifest_rows(iter(result)))
47
+
48
+
49
+ def _read_raw_manifest_rows(manifests: list[str]) -> list[ManifestRow]:
50
+ """Read CSV manifest files as raw dicts, normalising to MANIFEST_COLUMNS keys."""
51
+ rows = []
52
+ for path in manifests:
53
+ with pathlib.Path(path).open(encoding="utf-8-sig") as file:
54
+ reader = csv.DictReader(file)
55
+ for raw in reader:
56
+ rows.append(torow(MANIFEST_COLUMNS, raw))
57
+ return rows
58
+
59
+
60
+ def _parse_function_fields(prepare: str, func_name: str) -> dict[str, str]:
61
+ """Parse 'func_name(key1:val1, key2:val2, ...)' into {'key1': 'val1', 'key2': 'val2', ...}.
62
+
63
+ Splits on commas only when followed by a word-colon pattern, so values containing
64
+ commas inside brackets (e.g. ref:example2/City[id, name]) are handled correctly.
65
+ """
66
+ match = re.match(rf"{func_name}\((.+)\)\s*$", (prepare or "").strip())
67
+ if not match:
68
+ return {}
69
+ parts = re.split(r",\s*(?=\w+:)", match.group(1))
70
+ result = {}
71
+ for part in parts:
72
+ key, _, value = part.partition(":")
73
+ result[key.strip()] = value.strip().strip('"')
74
+ return result
75
+
76
+
77
+ def _parse_update_fields(prepare: str) -> dict[str, str]:
78
+ return _parse_function_fields(prepare, UPDATE_FUNCTION)
79
+
80
+
81
+ def _parse_insert_fields(prepare: str) -> dict[str, str]:
82
+ return _parse_function_fields(prepare, INSERT_FUNCTION)
83
+
84
+
85
+ def _is_restore_comment(row: ManifestRow, func_name: str) -> bool:
86
+ prepare = row.get("prepare") or ""
87
+ return row.get("type") == COLUMN_TYPE_COMMENT and prepare.startswith(func_name)
88
+
89
+
90
+ def _insert_base_resets(result: list[ManifestRow]) -> list[ManifestRow]:
91
+ """Insert `/` reset rows where base context would leak from a previous
92
+ model into a model that has no base row directly above it."""
93
+ fixed: list[ManifestRow] = []
94
+ active_base: str | None = None
95
+ base_seen_since_last_model: bool = False
96
+
97
+ for row in result:
98
+ is_base_row = row.get("base") and not row.get("model") and not row.get("property")
99
+ is_model_row = bool(row.get("model"))
100
+
101
+ if is_base_row:
102
+ active_base = row["base"]
103
+ base_seen_since_last_model = True
104
+ fixed.append(row)
105
+ elif is_model_row:
106
+ if not base_seen_since_last_model and active_base and active_base != "/":
107
+ # No base row immediately above this model, but a base context
108
+ # is still active from a previous model. Insert `/` to break it.
109
+ reset_row = {col: "" for col in row.keys()}
110
+ reset_row["base"] = "/"
111
+ fixed.append(reset_row)
112
+ active_base = "/"
113
+ base_seen_since_last_model = False
114
+ fixed.append(row)
115
+ else:
116
+ fixed.append(row)
117
+
118
+ return fixed
119
+
120
+
121
+ def _uncomment_rows(rows: list[ManifestRow], uri_filter: str | None) -> list[ManifestRow]:
122
+ """
123
+ Walk rows in order. When an `update` or `insert` comment is found (and passes the URI filter),
124
+ patch the most recent property row in `update` case, insert a new base row before the model in `insert` case and drop the comment row.
125
+ """
126
+ result: list[ManifestRow] = []
127
+ last_property_index: int | None = None
128
+ last_model_index: int | None = None
129
+ base_was_inserted: bool = False
130
+
131
+ for row in rows:
132
+ if _is_restore_comment(row, UPDATE_FUNCTION) or _is_restore_comment(row, INSERT_FUNCTION):
133
+ # Restore only rows that match the `uri` if it is given by input;
134
+ if uri_filter is not None and row.get("uri") != uri_filter:
135
+ result.append(row)
136
+ continue
137
+ if _is_restore_comment(row, UPDATE_FUNCTION):
138
+ fields = _parse_update_fields(row.get("prepare", ""))
139
+ if fields and last_property_index is not None:
140
+ prop_row: dict = dict(result[last_property_index])
141
+ for key, value in fields.items():
142
+ prop_row[key] = value
143
+ prop_row["level"] = row.get("level") or ""
144
+ result[last_property_index] = prop_row
145
+
146
+ elif _is_restore_comment(row, INSERT_FUNCTION):
147
+ fields = _parse_insert_fields(row.get("prepare", ""))
148
+ if fields and last_model_index is not None:
149
+ base_row: dict = {col: "" for col in row.keys()}
150
+ for key, value in fields.items():
151
+ base_row[key] = value
152
+ if row.get("level"):
153
+ model_row = result[last_model_index]
154
+ model_row["level"] = row.get("level")
155
+ result[last_model_index] = model_row
156
+ result.insert(last_model_index, base_row)
157
+ last_model_index += 1
158
+ base_was_inserted = True
159
+
160
+ else:
161
+ # If it's not an `update` or `insert` comment, append as-is;
162
+ if row.get("model"):
163
+ last_model_index = len(result)
164
+ last_property_index = None
165
+ if row.get("property"):
166
+ last_property_index = len(result)
167
+ result.append(row)
168
+
169
+ if base_was_inserted:
170
+ result = _insert_base_resets(result)
171
+
172
+ return result
@@ -929,6 +929,8 @@ class UrlParams:
929
929
  select_props: Optional[Dict[str, Union[Expr, Bind]]] = None
930
930
  select_funcs: Optional[Dict[str, FuncProperty]] = None
931
931
 
932
+ custom_scope: str | None = None
933
+
932
934
  sort: List[dict] = None
933
935
  limit: Optional[int] = None
934
936
  offset: Optional[int] = None
@@ -31,6 +31,7 @@ from spinta.ufuncs.querybuilder.components import Selected
31
31
  from spinta.ufuncs.helpers import merge_formulas
32
32
  from spinta.ufuncs.resultbuilder.components import ResultBuilder
33
33
  from spinta.utils.data import take
34
+ from spinta.utils.nestedstruct import flat_dicts_to_nested, extract_list_property_names
34
35
  from spinta.utils.schema import NA
35
36
 
36
37
  OBJECT_DTYPE = "object"
@@ -268,12 +269,14 @@ def dask_get_all(
268
269
  where = env.execute(expr)
269
270
  qry = env.build(where)
270
271
 
272
+ env_selected = env.selected
273
+ list_keys = extract_list_property_names(model, env_selected.keys())
271
274
  for i, row in qry.iterrows():
272
275
  row = row.to_dict()
273
276
  res = {
274
277
  "_type": model.model_type(),
275
278
  }
276
- for key, sel in env.selected.items():
279
+ for key, sel in env_selected.items():
277
280
  val = _get_row_value(context, row, sel, env.params)
278
281
  if sel.prop:
279
282
  if isinstance(sel.prop.dtype, PrimaryKey):
@@ -288,6 +291,7 @@ def dask_get_all(
288
291
  elif is_custom_id_prop(sel.prop) and isinstance(val, list) and not isinstance(sel.prop.dtype, Base32):
289
292
  val = encode_composite_string_id(val, model.external.pkeys)
290
293
  res[key] = val
294
+ res = flat_dicts_to_nested(res, list_keys=list_keys)
291
295
  res = commands.cast_backend_to_python(context, model, backend, res, extra_properties=extra_properties)
292
296
  yield res
293
297
 
@@ -1,15 +1,18 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import dataclasses
3
4
  from typing import Any
4
5
 
5
- from dask.dataframe import DataFrame
6
+ import pandas as pd
7
+ from dask.dataframe import DataFrame, from_delayed
8
+ from dask import delayed
6
9
 
7
10
  from spinta.components import Model, Property
8
11
  from spinta.core.ufuncs import Env, Expr
9
12
 
10
13
  from spinta.exceptions import UnknownMethod
11
14
  from spinta.ufuncs.propertyresolver.components import PropertyResolver
12
- from spinta.ufuncs.querybuilder.components import Selected
15
+ from spinta.ufuncs.querybuilder.components import Selected, Func
13
16
  from spinta.utils.schema import NA
14
17
  from spinta.datasets.backends.dataframe.components import DaskBackend
15
18
 
@@ -33,6 +36,7 @@ class DaskDataFrameQueryBuilder(Env):
33
36
  offset=None,
34
37
  params=params,
35
38
  url_query=None,
39
+ count=False,
36
40
  )
37
41
 
38
42
  def build(self, where):
@@ -48,6 +52,18 @@ class DaskDataFrameQueryBuilder(Env):
48
52
 
49
53
  if where is not None:
50
54
  df = df[where]
55
+
56
+ if self.count:
57
+ # To only return one row, we need to calculate the count first and then transform it back to dataframe
58
+ # Otherwise iterrows will duplicate the result with the number of rows equal to count.
59
+ # Dask allows delayed calculations which ar lazy.
60
+
61
+ # Create a delayed scalar function that returns the count of the dataframe as a new one-column dataframe
62
+ count_scalar = delayed(lambda value: pd.DataFrame({RESERVED_COUNT_PROP: [value]}))(
63
+ df.map_partitions(len).sum()
64
+ )
65
+ df = from_delayed([count_scalar], meta=pd.DataFrame({RESERVED_COUNT_PROP: pd.Series(dtype="int64")}))
66
+
51
67
  return df
52
68
 
53
69
  def execute(self, expr: Any):
@@ -73,3 +89,11 @@ class DaskSelected(Selected):
73
89
  prop: Property = None
74
90
  # A value or an Expr for further processing on selected value.
75
91
  prep: Any = NA
92
+
93
+
94
+ RESERVED_COUNT_PROP = "__dask_count"
95
+
96
+
97
+ @dataclasses.dataclass
98
+ class Count(Func):
99
+ pass
@@ -13,6 +13,8 @@ from spinta.core.ufuncs import Expr, ufunc, Bind, Unresolved, GetAttr
13
13
  from spinta.datasets.backends.dataframe.ufuncs.query.components import (
14
14
  DaskDataFrameQueryBuilder,
15
15
  DaskSelected as Selected,
16
+ Count,
17
+ RESERVED_COUNT_PROP,
16
18
  )
17
19
  from spinta.datasets.components import Param
18
20
  from spinta.datasets.utils import iterparams
@@ -22,7 +24,7 @@ from spinta.exceptions import (
22
24
  SourceOrPrepareNotAllowed,
23
25
  InvalidArgumentInExpression,
24
26
  )
25
- from spinta.types.datatype import DataType, PrimaryKey, Ref
27
+ from spinta.types.datatype import DataType, Integer, Number, Boolean, PrimaryKey, Ref
26
28
  from spinta.types.text.components import Text
27
29
  from spinta.ufuncs.components import ForeignProperty
28
30
  from spinta.utils.data import take
@@ -127,8 +129,8 @@ def _resolve_unresolved(env: DaskDataFrameQueryBuilder, field: Bind) -> str:
127
129
 
128
130
 
129
131
  @ufunc.resolver(DaskDataFrameQueryBuilder)
130
- def count(env: DaskDataFrameQueryBuilder):
131
- return len(env.dataframe.index)
132
+ def count(env: DaskDataFrameQueryBuilder) -> Count:
133
+ return Count()
132
134
 
133
135
 
134
136
  @ufunc.resolver(DaskDataFrameQueryBuilder, Expr)
@@ -142,30 +144,8 @@ def select(env: DaskDataFrameQueryBuilder, expr: Expr):
142
144
 
143
145
  env.selected = {}
144
146
  if args:
145
- resolved = {}
146
- selected_keys = set()
147
- selected_languages = {}
148
147
  for key, arg in args:
149
- resolved[key] = env.call("_resolve_property", arg)
150
- for key, prop in resolved.items():
151
- prop_parent = getattr(prop, "parent", None)
152
- if prop_parent and isinstance(prop_parent.dtype, Text):
153
- selected_keys.add(prop_parent.place)
154
- selected_languages.setdefault(prop_parent.place, set()).add(prop.name)
155
- else:
156
- selected_keys.add(prop.name)
157
- for selected_key in selected_keys:
158
- prop = env.model.flatprops.get(selected_key)
159
- if isinstance(prop.dtype, Text) and authorized(env.context, prop, Action.GETALL):
160
- selected_language = selected_languages.get(prop.place)
161
- if not selected_language:
162
- env.selected[prop.place] = env.call("select", prop)
163
- else:
164
- env.selected[prop.place] = env.call("select", prop, selected_language)
165
- elif authorized(env.context, prop, Action.GETALL):
166
- env.selected[resolved[selected_key].place] = env.call("select", resolved[selected_key])
167
- else:
168
- raise PropertyNotFound(env.model, property=resolved[selected_key])
148
+ env.selected[key] = env.call("select", arg)
169
149
  else:
170
150
  for prop in take(["_id", "_revision", all], env.model.properties).values():
171
151
  if prop.name == "_revision" and not is_custom_revision_prop(prop):
@@ -502,6 +482,15 @@ def select(
502
482
  return {k: env.call("select", v) for k, v in prep.items()}
503
483
 
504
484
 
485
+ @ufunc.resolver(DaskDataFrameQueryBuilder, Count)
486
+ def select(
487
+ env: DaskDataFrameQueryBuilder,
488
+ value: Count,
489
+ ) -> Selected:
490
+ env.count = True
491
+ return Selected(item=RESERVED_COUNT_PROP)
492
+
493
+
505
494
  @ufunc.resolver(DaskDataFrameQueryBuilder, Expr)
506
495
  def base64(env: DaskDataFrameQueryBuilder, expr: Expr) -> Expr:
507
496
  return expr # Expression will be resolved in ResultBuilder
@@ -533,6 +522,24 @@ def eq_(env: DaskDataFrameQueryBuilder, dtype: DataType, obj: object) -> Series:
533
522
  return env.dataframe[name] == str(obj)
534
523
 
535
524
 
525
+ @ufunc.resolver(DaskDataFrameQueryBuilder, Integer, object, name="eq")
526
+ def eq_(env: DaskDataFrameQueryBuilder, dtype: Integer, obj: object) -> Series:
527
+ name = dtype.prop.external.name
528
+ return env.dataframe[name] == obj
529
+
530
+
531
+ @ufunc.resolver(DaskDataFrameQueryBuilder, Number, object, name="eq")
532
+ def eq_(env: DaskDataFrameQueryBuilder, dtype: Number, obj: object) -> Series:
533
+ name = dtype.prop.external.name
534
+ return env.dataframe[name] == obj
535
+
536
+
537
+ @ufunc.resolver(DaskDataFrameQueryBuilder, Boolean, object, name="eq")
538
+ def eq_(env: DaskDataFrameQueryBuilder, dtype: Boolean, obj: object) -> Series:
539
+ name = dtype.prop.external.name
540
+ return env.dataframe[name] == obj
541
+
542
+
536
543
  @ufunc.resolver(DaskDataFrameQueryBuilder, Param, name="eval")
537
544
  def eval_(env: DaskDataFrameQueryBuilder, param: Param) -> Iterator[str]:
538
545
  resolved_values = (
@@ -4,14 +4,15 @@ from typing import List, Any
4
4
 
5
5
  from spinta import commands
6
6
  from spinta.backends import Backend
7
- from spinta.backends.helpers import is_custom_id_prop
7
+ from spinta.backends.helpers import check_if_model_primary_key_is_composite, is_custom_id_prop
8
8
  from spinta.components import Context, Model
9
9
  from spinta.core.enums import Mode
10
10
  from spinta.datasets.backends.helpers import generate_ref_id_using_select, flatten_keymap_encoding_values
11
11
  from spinta.datasets.backends.sql.components import Sql
12
+ from spinta.datasets.helpers import encode_composite_string_id
12
13
  from spinta.datasets.keymaps.components import KeyMap
13
14
  from spinta.exceptions import GivenValueCountMissmatch, KeymapValueNotFound
14
- from spinta.types.datatype import Ref, ExternalRef, Array
15
+ from spinta.types.datatype import Base32, Ref, ExternalRef, Array
15
16
  from spinta.types.namespace import check_if_model_has_backend_and_source
16
17
 
17
18
 
@@ -26,6 +27,80 @@ def cast_backend_to_python(
26
27
  return super_(context, model, backend, data, keymap=keymap, **kwargs)
27
28
 
28
29
 
30
+ def _cast_custom_ref_id(
31
+ context: Context,
32
+ dtype: Ref,
33
+ backend: Sql,
34
+ ref_model: Model,
35
+ ref_id_prop,
36
+ values: dict,
37
+ ref_filters_disabled: bool,
38
+ ):
39
+ # A custom `_id` is derived from the referenced model's primary keys. When
40
+ # implicit ref filters are disabled, the referenced row might be filtered
41
+ # out at the source (e.g. by an explicit filter on the ref model), so
42
+ # selecting it could find nothing. Since the refprop values already give us
43
+ # those primary keys, rebuild the id the same way the referenced model would
44
+ # (mirrors `build_row_result`) instead of requiring the row to be selectable
45
+ # -- but only when the refprops are exactly those primary keys.
46
+ if ref_filters_disabled and dtype.refprops == ref_model.external.pkeys:
47
+ pk_values = list(values.values())
48
+ is_composite = check_if_model_primary_key_is_composite(ref_model)
49
+ if is_composite and not isinstance(ref_id_prop.dtype, Base32):
50
+ # `build_row_result` joins composite primary keys into a single
51
+ # string for non Base32 ids.
52
+ return encode_composite_string_id(pk_values, ref_model.external.pkeys)
53
+ # Single primary key ids (and Base32 ids, which cbor encode composite
54
+ # keys) are produced by casting the raw primary key value(s) through the
55
+ # `_id` data type.
56
+ data = pk_values if is_composite else pk_values[0]
57
+ return commands.cast_backend_to_python(context, ref_id_prop.dtype, backend, data)
58
+
59
+ return generate_ref_id_using_select(context, dtype, values)
60
+
61
+
62
+ def _cast_keymap_ref_id(
63
+ context: Context,
64
+ dtype: Ref,
65
+ ref_model: Model,
66
+ keymap: KeyMap,
67
+ keymap_name: str,
68
+ encoding_values,
69
+ values: dict,
70
+ ref_filters_disabled: bool,
71
+ ):
72
+ if keymap.contains(keymap_name, encoding_values):
73
+ return keymap.encode(keymap_name, encoding_values)
74
+
75
+ if encoding_values is None:
76
+ return None
77
+
78
+ if ref_model.mode == Mode.external and not check_if_model_has_backend_and_source(ref_model):
79
+ raise KeymapValueNotFound(
80
+ dtype,
81
+ keymap=keymap.name,
82
+ model_name=dtype.model.name,
83
+ values=encoding_values,
84
+ )
85
+
86
+ # When implicit ref filters are disabled, the referenced row might be
87
+ # filtered out at the source (e.g. by an explicit filter on the ref model),
88
+ # so selecting it could find nothing. The `_id` of a keymap based model is
89
+ # deterministic given its primary keys, so encode it directly instead of
90
+ # requiring the row to be selectable.
91
+ #
92
+ # Models with an identifiable `base` are excluded: their `_id` is seeded by
93
+ # the base's key (see `generate_pk_for_row`), which cannot be reconstructed
94
+ # from the foreign key alone. Encoding directly would mint a base-unaware id
95
+ # that diverges from -- and later clashes with -- the value the referenced
96
+ # model produces, so fall back to selecting.
97
+ base_seeded = ref_model.base and commands.identifiable(ref_model.base)
98
+ if ref_filters_disabled and not base_seeded:
99
+ return keymap.encode(keymap_name, encoding_values)
100
+
101
+ return generate_ref_id_using_select(context, dtype, values)
102
+
103
+
29
104
  @commands.cast_backend_to_python.register(Context, Ref, Sql, dict)
30
105
  def cast_backend_to_python(context: Context, dtype: Ref, backend: Sql, data: dict, *, keymap: KeyMap = None, **kwargs):
31
106
  processed_data = {}
@@ -71,24 +146,19 @@ def cast_backend_to_python(context: Context, dtype: Ref, backend: Sql, data: dic
71
146
  # Backwards compatibility, all nested values are converted to list values without keys
72
147
  encoding_values = flatten_keymap_encoding_values(encoding_values)
73
148
 
74
- if is_custom_id_prop(ref_model.properties["_id"]):
75
- id_value = generate_ref_id_using_select(context, dtype, values)
149
+ # First decide where the referenced model's `_id` comes from: a custom `_id`
150
+ # is derived from its own primary keys, while a default `_id` is resolved
151
+ # through the keymap. The two are produced differently, so handle each in its
152
+ # own helper (each also decides whether the id can be rebuilt locally or
153
+ # whether the referenced row must be selected).
154
+ ref_id_prop = ref_model.properties["_id"]
155
+ ref_filters_disabled = not context.get("config").check_ref_filters
156
+ if is_custom_id_prop(ref_id_prop):
157
+ id_value = _cast_custom_ref_id(context, dtype, backend, ref_model, ref_id_prop, values, ref_filters_disabled)
76
158
  else:
77
- contains = keymap.contains(keymap_name, encoding_values)
78
-
79
- if contains:
80
- id_value = keymap.encode(keymap_name, encoding_values)
81
- elif encoding_values is None:
82
- id_value = None
83
- elif ref_model.mode == Mode.external and not check_if_model_has_backend_and_source(ref_model):
84
- raise KeymapValueNotFound(
85
- dtype,
86
- keymap=keymap.name,
87
- model_name=dtype.model.name,
88
- values=encoding_values,
89
- )
90
- else:
91
- id_value = generate_ref_id_using_select(context, dtype, values)
159
+ id_value = _cast_keymap_ref_id(
160
+ context, dtype, ref_model, keymap, keymap_name, encoding_values, values, ref_filters_disabled
161
+ )
92
162
 
93
163
  processed_data["_id"] = id_value
94
164