vastdb 0.1.1__tar.gz → 0.1.3__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 (185) hide show
  1. {vastdb-0.1.1 → vastdb-0.1.3}/CHANGELOG.md +32 -0
  2. {vastdb-0.1.1/vastdb.egg-info → vastdb-0.1.3}/PKG-INFO +8 -4
  3. {vastdb-0.1.1 → vastdb-0.1.3}/README.md +5 -2
  4. {vastdb-0.1.1 → vastdb-0.1.3}/requirements.txt +1 -1
  5. {vastdb-0.1.1 → vastdb-0.1.3}/setup.py +3 -1
  6. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/__init__.py +6 -2
  7. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/bench/test_perf.py +3 -3
  8. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/bucket.py +29 -15
  9. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/errors.py +40 -7
  10. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/internal_commands.py +194 -233
  11. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/schema.py +11 -6
  12. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/session.py +16 -1
  13. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/table.py +181 -77
  14. vastdb-0.1.3/vastdb/tests/test_duckdb.py +61 -0
  15. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/tests/test_imports.py +13 -1
  16. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/tests/test_projections.py +1 -0
  17. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/tests/test_sanity.py +2 -2
  18. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/tests/test_schemas.py +3 -3
  19. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/tests/test_tables.py +60 -50
  20. vastdb-0.1.3/vastdb/tests/test_util.py +39 -0
  21. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/tests/util.py +1 -4
  22. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/transaction.py +32 -6
  23. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/util.py +42 -6
  24. {vastdb-0.1.1 → vastdb-0.1.3/vastdb.egg-info}/PKG-INFO +8 -4
  25. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb.egg-info/SOURCES.txt +2 -0
  26. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb.egg-info/requires.txt +1 -1
  27. {vastdb-0.1.1 → vastdb-0.1.3}/LICENSE +0 -0
  28. {vastdb-0.1.1 → vastdb-0.1.3}/MANIFEST.in +0 -0
  29. {vastdb-0.1.1 → vastdb-0.1.3}/setup.cfg +0 -0
  30. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/__init__.py +0 -0
  31. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/__init__.py +0 -0
  32. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/__init__.py +0 -0
  33. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/__init__.py +0 -0
  34. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/__init__.py +0 -0
  35. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Aggregate.py +0 -0
  36. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySlice.py +0 -0
  37. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySubscript.py +0 -0
  38. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BinaryLiteral.py +0 -0
  39. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BooleanLiteral.py +0 -0
  40. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Bound.py +0 -0
  41. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Call.py +0 -0
  42. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CaseFragment.py +0 -0
  43. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Cast.py +0 -0
  44. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConcreteBoundImpl.py +0 -0
  45. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConditionalCase.py +0 -0
  46. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CurrentRow.py +0 -0
  47. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DateLiteral.py +0 -0
  48. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DecimalLiteral.py +0 -0
  49. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Deref.py +0 -0
  50. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DurationLiteral.py +0 -0
  51. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Expression.py +0 -0
  52. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ExpressionImpl.py +0 -0
  53. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldIndex.py +0 -0
  54. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldRef.py +0 -0
  55. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Filter.py +0 -0
  56. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FixedSizeBinaryLiteral.py +0 -0
  57. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float16Literal.py +0 -0
  58. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float32Literal.py +0 -0
  59. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float64Literal.py +0 -0
  60. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Following.py +0 -0
  61. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Frame.py +0 -0
  62. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Grouping.py +0 -0
  63. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int16Literal.py +0 -0
  64. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int32Literal.py +0 -0
  65. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int64Literal.py +0 -0
  66. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int8Literal.py +0 -0
  67. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteral.py +0 -0
  68. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralDaysMilliseconds.py +0 -0
  69. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralImpl.py +0 -0
  70. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralMonths.py +0 -0
  71. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Join.py +0 -0
  72. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/JoinKind.py +0 -0
  73. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/KeyValue.py +0 -0
  74. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Limit.py +0 -0
  75. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ListLiteral.py +0 -0
  76. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Literal.py +0 -0
  77. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralColumn.py +0 -0
  78. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralImpl.py +0 -0
  79. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralRelation.py +0 -0
  80. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapKey.py +0 -0
  81. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapLiteral.py +0 -0
  82. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/OrderBy.py +0 -0
  83. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Ordering.py +0 -0
  84. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Plan.py +0 -0
  85. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Preceding.py +0 -0
  86. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Project.py +0 -0
  87. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelId.py +0 -0
  88. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Relation.py +0 -0
  89. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelationImpl.py +0 -0
  90. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOpKind.py +0 -0
  91. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOperation.py +0 -0
  92. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SimpleCase.py +0 -0
  93. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SortKey.py +0 -0
  94. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Source.py +0 -0
  95. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StringLiteral.py +0 -0
  96. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructField.py +0 -0
  97. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructLiteral.py +0 -0
  98. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimeLiteral.py +0 -0
  99. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimestampLiteral.py +0 -0
  100. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt16Literal.py +0 -0
  101. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt32Literal.py +0 -0
  102. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt64Literal.py +0 -0
  103. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt8Literal.py +0 -0
  104. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Unbounded.py +0 -0
  105. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/WindowCall.py +0 -0
  106. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/__init__.py +0 -0
  107. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Binary.py +0 -0
  108. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Block.py +0 -0
  109. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompression.py +0 -0
  110. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompressionMethod.py +0 -0
  111. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Bool.py +0 -0
  112. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Buffer.py +0 -0
  113. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/CompressionType.py +0 -0
  114. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Date.py +0 -0
  115. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/DateUnit.py +0 -0
  116. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Decimal.py +0 -0
  117. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryBatch.py +0 -0
  118. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryEncoding.py +0 -0
  119. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryKind.py +0 -0
  120. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Duration.py +0 -0
  121. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Endianness.py +0 -0
  122. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Feature.py +0 -0
  123. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Field.py +0 -0
  124. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/FieldNode.py +0 -0
  125. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeBinary.py +0 -0
  126. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeList.py +0 -0
  127. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/FloatingPoint.py +0 -0
  128. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Footer.py +0 -0
  129. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Int.py +0 -0
  130. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Interval.py +0 -0
  131. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/IntervalUnit.py +0 -0
  132. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/KeyValue.py +0 -0
  133. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/LargeBinary.py +0 -0
  134. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/LargeList.py +0 -0
  135. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/LargeUtf8.py +0 -0
  136. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/List.py +0 -0
  137. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Map.py +0 -0
  138. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Message.py +0 -0
  139. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/MessageHeader.py +0 -0
  140. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/MetadataVersion.py +0 -0
  141. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Null.py +0 -0
  142. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Precision.py +0 -0
  143. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/RecordBatch.py +0 -0
  144. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Schema.py +0 -0
  145. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixCompressedAxis.py +0 -0
  146. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixIndexCSX.py +0 -0
  147. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensor.py +0 -0
  148. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndex.py +0 -0
  149. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCOO.py +0 -0
  150. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCSF.py +0 -0
  151. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Struct_.py +0 -0
  152. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Tensor.py +0 -0
  153. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/TensorDim.py +0 -0
  154. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Time.py +0 -0
  155. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/TimeUnit.py +0 -0
  156. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Timestamp.py +0 -0
  157. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Type.py +0 -0
  158. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Union.py +0 -0
  159. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/UnionMode.py +0 -0
  160. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/Utf8.py +0 -0
  161. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/org/apache/arrow/flatbuf/__init__.py +0 -0
  162. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/AlterColumnRequest.py +0 -0
  163. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/AlterProjectionTableRequest.py +0 -0
  164. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/AlterSchemaRequest.py +0 -0
  165. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/AlterTableRequest.py +0 -0
  166. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/Column.py +0 -0
  167. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/ColumnType.py +0 -0
  168. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/CreateProjectionRequest.py +0 -0
  169. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/CreateSchemaRequest.py +0 -0
  170. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/GetProjectionTableStatsResponse.py +0 -0
  171. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/GetTableStatsResponse.py +0 -0
  172. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/ImportDataRequest.py +0 -0
  173. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/ListProjectionsResponse.py +0 -0
  174. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/ListSchemasResponse.py +0 -0
  175. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/ListTablesResponse.py +0 -0
  176. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/ObjectDetails.py +0 -0
  177. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/S3File.py +0 -0
  178. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/VipRange.py +0 -0
  179. {vastdb-0.1.1 → vastdb-0.1.3}/vast_flatbuf/tabular/__init__.py +0 -0
  180. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/bench/__init__.py +0 -0
  181. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/conftest.py +0 -0
  182. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/tests/__init__.py +0 -0
  183. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb/tests/test_nested.py +0 -0
  184. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb.egg-info/dependency_links.txt +0 -0
  185. {vastdb-0.1.1 → vastdb-0.1.3}/vastdb.egg-info/top_level.txt +0 -0
@@ -4,6 +4,37 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
6
 
7
+ ## [0.1.3] (2024-05-05)
8
+ [0.1.3]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.2...v0.1.3
9
+
10
+ ### Added
11
+ - Document predicate pushdown support
12
+ - Access imports' table (for VAST 5.2+)
13
+ - Support `is_in` predicate pushdown
14
+ - Document `table.py`
15
+
16
+ ### Fixed
17
+ - Freeze `ibis` dependency at 8.0.0
18
+ - Support snapshot-based access
19
+ - Optimize RecordBatch slicing
20
+
21
+ ## [0.1.2] (2024-04-25)
22
+ [0.1.2]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.1...v0.1.2
23
+
24
+ ### Added
25
+ - Allow querying [VAST Catalog](https://www.vastdata.com/blog/vast-catalog-treat-your-file-system-like-a-database)
26
+ - Use [mypy](https://mypy-lang.org/) for type annotation checking
27
+
28
+ ### Fixed
29
+ - Fix handling HTTPS endpoints [#50]
30
+ - Optimize `Table.select()` performance
31
+ - Use `GET` request to retrieve cluster version
32
+ - Enable `ruff` preview mode
33
+ - Make sure DuckDB integration fails gracefully when transaction is closed prematurely
34
+
35
+ ### Removed
36
+ - Don't return row IDs from `Table.insert()`
37
+
7
38
  ## [0.1.1] (2024-04-15)
8
39
  [0.1.1]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.0...v0.1.1
9
40
 
@@ -93,3 +124,4 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
93
124
  [#42]: https://github.com/vast-data/vastdb_sdk/pull/42
94
125
  [#43]: https://github.com/vast-data/vastdb_sdk/pull/43
95
126
  [#47]: https://github.com/vast-data/vastdb_sdk/pull/47
127
+ [#50]: https://github.com/vast-data/vastdb_sdk/pull/50
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
7
7
  Author-email: hello@vastdata.com
8
8
  License: Copyright (C) VAST Data Ltd.
9
- Platform: UNKNOWN
10
9
  Classifier: Development Status :: 4 - Beta
11
10
  Classifier: License :: OSI Approved :: Apache Software License
12
11
  Classifier: Programming Language :: Python :: 3
@@ -19,6 +18,13 @@ Classifier: Topic :: Database :: Front-Ends
19
18
  Requires-Python: >=3.9.0
20
19
  Description-Content-Type: text/markdown
21
20
  License-File: LICENSE
21
+ Requires-Dist: aws-requests-auth
22
+ Requires-Dist: boto3
23
+ Requires-Dist: flatbuffers
24
+ Requires-Dist: ibis-framework==8.0.0
25
+ Requires-Dist: pyarrow
26
+ Requires-Dist: requests
27
+ Requires-Dist: xmltodict
22
28
 
23
29
 
24
30
  `vastdb` is a Python-based SDK designed for interacting
@@ -27,5 +33,3 @@ and [VAST Catalog](https://vastdata.com/blog/vast-catalog-treat-your-file-system
27
33
  enabling schema and table management, efficient ingest, query and modification of columnar data.
28
34
 
29
35
  For more details, see [our whitepaper](https://vastdata.com/whitepaper/#TheVASTDataBase).
30
-
31
-
@@ -86,6 +86,8 @@ Our SDK supports predicate and projection pushdown:
86
86
  table.select(predicate=table['c3'].contains('substring'))
87
87
  ```
88
88
 
89
+ See [here for more details](docs/predicate.md).
90
+
89
91
  ## Import a single Parquet file via S3 protocol
90
92
 
91
93
  It is possible to efficiently create a table from a Parquet file (without copying it via the client):
@@ -150,10 +152,11 @@ p.drop()
150
152
 
151
153
  ## Snapshots
152
154
 
153
- It is possible to list [available snapshots](https://vastdata.com/blog/bringing-snapshots-to-vasts-element-store):
155
+ It is possible to use [snapshots](https://vastdata.com/blog/bringing-snapshots-to-vasts-element-store) for accessing the Database:
154
156
 
155
157
  ```python
156
- print(bucket.list_snapshots())
158
+ snaps = bucket.list_snapshots()
159
+ batches = snaps[0].schema('schema-name').table('table-name').select()
157
160
  ```
158
161
 
159
162
  ## VAST Catalog
@@ -1,7 +1,7 @@
1
1
  aws-requests-auth
2
2
  boto3
3
3
  flatbuffers
4
- ibis-framework
4
+ ibis-framework==8.0.0
5
5
  pyarrow
6
6
  requests
7
7
  xmltodict
@@ -11,6 +11,7 @@ enabling schema and table management, efficient ingest, query and modification o
11
11
  For more details, see [our whitepaper](https://vastdata.com/whitepaper/#TheVASTDataBase).
12
12
  """
13
13
 
14
+
14
15
  def _get_version_suffix():
15
16
  import subprocess
16
17
 
@@ -18,6 +19,7 @@ def _get_version_suffix():
18
19
  print(f"Git commit: {commit}")
19
20
  return f".dev1+vast.{commit.decode()[:16]}"
20
21
 
22
+
21
23
  suffix = ''
22
24
  if os.environ.get('VASTDB_APPEND_VERSION_SUFFIX'):
23
25
  suffix = _get_version_suffix()
@@ -26,7 +28,7 @@ setup(
26
28
  name='vastdb',
27
29
  python_requires='>=3.9.0',
28
30
  description='VAST Data SDK',
29
- version='0.1.1' + suffix,
31
+ version='0.1.3' + suffix,
30
32
  url='https://github.com/vast-data/vastdb_sdk',
31
33
  author='VAST DATA',
32
34
  author_email='hello@vastdata.com',
@@ -1,7 +1,11 @@
1
1
  """VAST Database Python SDK."""
2
2
 
3
+ import functools
4
+
3
5
  from . import session
4
6
 
7
+
5
8
  # A helper function, useful as a short-hand for Session c-tor: `session = vastdb.connect(...)`
6
- connect = session.Session
7
- connect.__name__ = 'connect'
9
+ @functools.wraps(session.Session)
10
+ def connect(*args, **kwargs): # noqa: D103
11
+ return session.Session(*args, **kwargs)
@@ -12,7 +12,7 @@ log = logging.getLogger(__name__)
12
12
 
13
13
  @pytest.mark.benchmark
14
14
  def test_bench(session, clean_bucket_name, parquets_path, crater_path):
15
- files = [str(parquets_path/f) for f in (parquets_path.glob('**/*.pq'))]
15
+ files = [str(parquets_path / f) for f in (parquets_path.glob('**/*.pq'))]
16
16
 
17
17
  with session.transaction() as tx:
18
18
  b = tx.bucket(clean_bucket_name)
@@ -22,8 +22,8 @@ def test_bench(session, clean_bucket_name, parquets_path, crater_path):
22
22
  s = time.time()
23
23
  pa_table = pa.Table.from_batches(t.select(columns=['sid'], predicate=t['sid'] == 10033007, config=config))
24
24
  e = time.time()
25
- log.info("'SELECT sid from TABLE WHERE sid = 10033007' returned in %s seconds.", e-s)
25
+ log.info("'SELECT sid from TABLE WHERE sid = 10033007' returned in %s seconds.", e - s)
26
26
  if crater_path:
27
27
  with open(f'{crater_path}/bench_results', 'a') as f:
28
- f.write(f"'SELECT sid FROM TABLE WHERE sid = 10033007' returned in {e-s} seconds")
28
+ f.write(f"'SELECT sid FROM TABLE WHERE sid = 10033007' returned in {e - s} seconds")
29
29
  assert pa_table.num_rows == 255_075
@@ -6,18 +6,14 @@ It is possible to list and access VAST snapshots generated over a bucket.
6
6
 
7
7
  import logging
8
8
  from dataclasses import dataclass
9
+ from typing import TYPE_CHECKING, List, Optional
9
10
 
10
11
  from . import errors, schema, transaction
11
12
 
12
- log = logging.getLogger(__name__)
13
-
14
-
15
- @dataclass
16
- class Snapshot:
17
- """VAST bucket-level snapshot."""
13
+ if TYPE_CHECKING:
14
+ from .schema import Schema
18
15
 
19
- name: str
20
- bucket: "Bucket"
16
+ log = logging.getLogger(__name__)
21
17
 
22
18
 
23
19
  @dataclass
@@ -27,7 +23,7 @@ class Bucket:
27
23
  name: str
28
24
  tx: "transaction.Transaction"
29
25
 
30
- def create_schema(self, path: str, fail_if_exists=True) -> "schema.Schema":
26
+ def create_schema(self, path: str, fail_if_exists=True) -> "Schema":
31
27
  """Create a new schema (a container of tables) under this bucket."""
32
28
  if current := self.schema(path, fail_if_missing=False):
33
29
  if fail_if_exists:
@@ -36,9 +32,9 @@ class Bucket:
36
32
  return current
37
33
  self.tx._rpc.api.create_schema(self.name, path, txid=self.tx.txid)
38
34
  log.info("Created schema: %s", path)
39
- return self.schema(path)
35
+ return self.schema(path) # type: ignore[return-value]
40
36
 
41
- def schema(self, path: str, fail_if_missing=True) -> "schema.Schema":
37
+ def schema(self, path: str, fail_if_missing=True) -> Optional["Schema"]:
42
38
  """Get a specific schema (a container of tables) under this bucket."""
43
39
  s = self.schemas(path)
44
40
  log.debug("schema: %s", s)
@@ -51,14 +47,14 @@ class Bucket:
51
47
  log.debug("Found schema: %s", s[0].name)
52
48
  return s[0]
53
49
 
54
- def schemas(self, name: str = None) -> ["schema.Schema"]:
50
+ def schemas(self, name: Optional[str] = None) -> List["Schema"]:
55
51
  """List bucket's schemas."""
56
52
  schemas = []
57
53
  next_key = 0
58
54
  exact_match = bool(name)
59
55
  log.debug("list schemas param: schema=%s, exact_match=%s", name, exact_match)
60
56
  while True:
61
- bucket_name, curr_schemas, next_key, is_truncated, _ = \
57
+ _bucket_name, curr_schemas, next_key, is_truncated, _ = \
62
58
  self.tx._rpc.api.list_schemas(bucket=self.name, next_key=next_key, txid=self.tx.txid,
63
59
  name_prefix=name, exact_match=exact_match)
64
60
  if not curr_schemas:
@@ -69,7 +65,22 @@ class Bucket:
69
65
 
70
66
  return [schema.Schema(name=name, bucket=self) for name, *_ in schemas]
71
67
 
72
- def snapshots(self) -> [Snapshot]:
68
+ def snapshot(self, name, fail_if_missing=True) -> Optional["Bucket"]:
69
+ """Get snapshot by name (if exists)."""
70
+ snapshots, _is_truncated, _next_key = \
71
+ self.tx._rpc.api.list_snapshots(bucket=self.name, name_prefix=name, max_keys=1)
72
+
73
+ expected_name = f".snapshot/{name}"
74
+ exists = snapshots and snapshots[0] == expected_name + "/"
75
+ if not exists:
76
+ if fail_if_missing:
77
+ raise errors.MissingSnapshot(self.name, expected_name)
78
+ else:
79
+ return None
80
+
81
+ return Bucket(name=f'{self.name}/{expected_name}', tx=self.tx)
82
+
83
+ def snapshots(self) -> List["Bucket"]:
73
84
  """List bucket's snapshots."""
74
85
  snapshots = []
75
86
  next_key = 0
@@ -82,4 +93,7 @@ class Bucket:
82
93
  if not is_truncated:
83
94
  break
84
95
 
85
- return [Snapshot(name=snapshot, bucket=self) for snapshot in snapshots]
96
+ return [
97
+ Bucket(name=f'{self.name}/{snapshot.strip("/")}', tx=self.tx)
98
+ for snapshot in snapshots
99
+ ]
@@ -26,6 +26,7 @@ log = logging.getLogger(__name__)
26
26
  class HttpError(Exception):
27
27
  code: str
28
28
  message: str
29
+ method: str
29
30
  url: str
30
31
  status: int # HTTP status
31
32
  headers: requests.structures.CaseInsensitiveDict # HTTP response headers
@@ -84,15 +85,33 @@ class InvalidArgument(Exception):
84
85
  pass
85
86
 
86
87
 
88
+ class TooWideRow(InvalidArgument):
89
+ pass
90
+
91
+
87
92
  class Missing(Exception):
88
93
  pass
89
94
 
90
95
 
96
+ class MissingTransaction(Missing):
97
+ pass
98
+
99
+
100
+ class NotSupported(Exception):
101
+ pass
102
+
103
+
91
104
  @dataclass
92
105
  class MissingBucket(Missing):
93
106
  bucket: str
94
107
 
95
108
 
109
+ @dataclass
110
+ class MissingSnapshot(Missing):
111
+ bucket: str
112
+ snapshot: str
113
+
114
+
96
115
  @dataclass
97
116
  class MissingSchema(Missing):
98
117
  bucket: str
@@ -131,6 +150,19 @@ class TableExists(Exists):
131
150
  table: str
132
151
 
133
152
 
153
+ @dataclass
154
+ class NotSupportedCommand(NotSupported):
155
+ bucket: str
156
+ schema: str
157
+ table: str
158
+
159
+
160
+ @dataclass
161
+ class NotSupportedVersion(NotSupported):
162
+ err_msg: str
163
+ version: str
164
+
165
+
134
166
  ERROR_TYPES_MAP = {
135
167
  HttpStatus.BAD_REQUEST: BadRequest,
136
168
  HttpStatus.FOBIDDEN: Forbidden,
@@ -150,21 +182,22 @@ def from_response(res: requests.Response):
150
182
 
151
183
  log.debug("response: url='%s', code=%s, headers=%s, body='%s'", res.request.url, res.status_code, res.headers, res.text)
152
184
  # try to parse S3 XML response for the error details:
153
- code = None
154
- message = None
185
+ code_str = None
186
+ message_str = None
155
187
  if res.text:
156
188
  try:
157
189
  root = xml.etree.ElementTree.fromstring(res.text)
158
190
  code = root.find('Code')
159
- code = code.text if code is not None else None
191
+ code_str = code.text if code is not None else None
160
192
  message = root.find('Message')
161
- message = message.text if message is not None else None
193
+ message_str = message.text if message is not None else None
162
194
  except xml.etree.ElementTree.ParseError:
163
195
  log.debug("invalid XML: %r", res.text)
164
196
 
165
197
  kwargs = dict(
166
- code=code,
167
- message=message,
198
+ code=code_str,
199
+ message=message_str,
200
+ method=res.request.method,
168
201
  url=res.request.url,
169
202
  status=res.status_code,
170
203
  headers=res.headers,
@@ -172,4 +205,4 @@ def from_response(res: requests.Response):
172
205
  log.warning("RPC failed: %s", kwargs)
173
206
  status = HttpStatus(res.status_code)
174
207
  error_type = ERROR_TYPES_MAP.get(status, UnexpectedError)
175
- raise error_type(**kwargs)
208
+ return error_type(**kwargs)