vastdb 0.1.0__tar.gz → 0.1.2__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 (184) hide show
  1. vastdb-0.1.2/CHANGELOG.md +113 -0
  2. vastdb-0.1.2/MANIFEST.in +1 -0
  3. {vastdb-0.1.0 → vastdb-0.1.2}/PKG-INFO +8 -4
  4. {vastdb-0.1.0 → vastdb-0.1.2}/setup.py +5 -2
  5. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/__init__.py +6 -2
  6. vastdb-0.1.2/vastdb/bench/test_perf.py +29 -0
  7. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/bucket.py +21 -9
  8. {vastdb-0.1.0/vastdb/tests → vastdb-0.1.2/vastdb}/conftest.py +21 -7
  9. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/errors.py +32 -9
  10. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/internal_commands.py +236 -278
  11. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/schema.py +22 -9
  12. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/session.py +2 -3
  13. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/table.py +57 -57
  14. vastdb-0.1.2/vastdb/tests/__init__.py +0 -0
  15. vastdb-0.1.2/vastdb/tests/test_duckdb.py +61 -0
  16. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/tests/test_imports.py +3 -5
  17. vastdb-0.1.2/vastdb/tests/test_nested.py +28 -0
  18. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/tests/test_projections.py +3 -1
  19. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/tests/test_sanity.py +5 -6
  20. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/tests/test_schemas.py +20 -1
  21. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/tests/test_tables.py +108 -76
  22. vastdb-0.1.2/vastdb/tests/util.py +15 -0
  23. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/transaction.py +18 -9
  24. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb/util.py +6 -4
  25. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb.egg-info/PKG-INFO +8 -4
  26. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb.egg-info/SOURCES.txt +10 -2
  27. vastdb-0.1.2/vastdb.egg-info/requires.txt +7 -0
  28. {vastdb-0.1.0 → vastdb-0.1.2}/LICENSE +0 -0
  29. {vastdb-0.1.0 → vastdb-0.1.2}/README.md +0 -0
  30. /vastdb-0.1.0/vastdb.egg-info/requires.txt → /vastdb-0.1.2/requirements.txt +0 -0
  31. {vastdb-0.1.0 → vastdb-0.1.2}/setup.cfg +0 -0
  32. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/__init__.py +0 -0
  33. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/__init__.py +0 -0
  34. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/__init__.py +0 -0
  35. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/__init__.py +0 -0
  36. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/__init__.py +0 -0
  37. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Aggregate.py +0 -0
  38. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySlice.py +0 -0
  39. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySubscript.py +0 -0
  40. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BinaryLiteral.py +0 -0
  41. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BooleanLiteral.py +0 -0
  42. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Bound.py +0 -0
  43. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Call.py +0 -0
  44. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CaseFragment.py +0 -0
  45. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Cast.py +0 -0
  46. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConcreteBoundImpl.py +0 -0
  47. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConditionalCase.py +0 -0
  48. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CurrentRow.py +0 -0
  49. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DateLiteral.py +0 -0
  50. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DecimalLiteral.py +0 -0
  51. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Deref.py +0 -0
  52. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DurationLiteral.py +0 -0
  53. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Expression.py +0 -0
  54. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ExpressionImpl.py +0 -0
  55. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldIndex.py +0 -0
  56. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldRef.py +0 -0
  57. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Filter.py +0 -0
  58. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FixedSizeBinaryLiteral.py +0 -0
  59. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float16Literal.py +0 -0
  60. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float32Literal.py +0 -0
  61. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float64Literal.py +0 -0
  62. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Following.py +0 -0
  63. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Frame.py +0 -0
  64. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Grouping.py +0 -0
  65. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int16Literal.py +0 -0
  66. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int32Literal.py +0 -0
  67. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int64Literal.py +0 -0
  68. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int8Literal.py +0 -0
  69. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteral.py +0 -0
  70. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralDaysMilliseconds.py +0 -0
  71. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralImpl.py +0 -0
  72. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralMonths.py +0 -0
  73. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Join.py +0 -0
  74. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/JoinKind.py +0 -0
  75. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/KeyValue.py +0 -0
  76. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Limit.py +0 -0
  77. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ListLiteral.py +0 -0
  78. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Literal.py +0 -0
  79. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralColumn.py +0 -0
  80. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralImpl.py +0 -0
  81. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralRelation.py +0 -0
  82. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapKey.py +0 -0
  83. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapLiteral.py +0 -0
  84. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/OrderBy.py +0 -0
  85. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Ordering.py +0 -0
  86. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Plan.py +0 -0
  87. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Preceding.py +0 -0
  88. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Project.py +0 -0
  89. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelId.py +0 -0
  90. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Relation.py +0 -0
  91. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelationImpl.py +0 -0
  92. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOpKind.py +0 -0
  93. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOperation.py +0 -0
  94. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SimpleCase.py +0 -0
  95. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SortKey.py +0 -0
  96. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Source.py +0 -0
  97. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StringLiteral.py +0 -0
  98. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructField.py +0 -0
  99. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructLiteral.py +0 -0
  100. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimeLiteral.py +0 -0
  101. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimestampLiteral.py +0 -0
  102. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt16Literal.py +0 -0
  103. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt32Literal.py +0 -0
  104. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt64Literal.py +0 -0
  105. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt8Literal.py +0 -0
  106. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Unbounded.py +0 -0
  107. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/WindowCall.py +0 -0
  108. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/__init__.py +0 -0
  109. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Binary.py +0 -0
  110. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Block.py +0 -0
  111. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompression.py +0 -0
  112. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompressionMethod.py +0 -0
  113. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Bool.py +0 -0
  114. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Buffer.py +0 -0
  115. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/CompressionType.py +0 -0
  116. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Date.py +0 -0
  117. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/DateUnit.py +0 -0
  118. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Decimal.py +0 -0
  119. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryBatch.py +0 -0
  120. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryEncoding.py +0 -0
  121. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryKind.py +0 -0
  122. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Duration.py +0 -0
  123. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Endianness.py +0 -0
  124. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Feature.py +0 -0
  125. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Field.py +0 -0
  126. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/FieldNode.py +0 -0
  127. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeBinary.py +0 -0
  128. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeList.py +0 -0
  129. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/FloatingPoint.py +0 -0
  130. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Footer.py +0 -0
  131. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Int.py +0 -0
  132. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Interval.py +0 -0
  133. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/IntervalUnit.py +0 -0
  134. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/KeyValue.py +0 -0
  135. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/LargeBinary.py +0 -0
  136. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/LargeList.py +0 -0
  137. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/LargeUtf8.py +0 -0
  138. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/List.py +0 -0
  139. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Map.py +0 -0
  140. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Message.py +0 -0
  141. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/MessageHeader.py +0 -0
  142. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/MetadataVersion.py +0 -0
  143. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Null.py +0 -0
  144. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Precision.py +0 -0
  145. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/RecordBatch.py +0 -0
  146. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Schema.py +0 -0
  147. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixCompressedAxis.py +0 -0
  148. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixIndexCSX.py +0 -0
  149. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensor.py +0 -0
  150. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndex.py +0 -0
  151. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCOO.py +0 -0
  152. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCSF.py +0 -0
  153. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Struct_.py +0 -0
  154. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Tensor.py +0 -0
  155. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/TensorDim.py +0 -0
  156. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Time.py +0 -0
  157. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/TimeUnit.py +0 -0
  158. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Timestamp.py +0 -0
  159. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Type.py +0 -0
  160. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Union.py +0 -0
  161. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/UnionMode.py +0 -0
  162. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/Utf8.py +0 -0
  163. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/org/apache/arrow/flatbuf/__init__.py +0 -0
  164. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/AlterColumnRequest.py +0 -0
  165. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/AlterProjectionTableRequest.py +0 -0
  166. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/AlterSchemaRequest.py +0 -0
  167. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/AlterTableRequest.py +0 -0
  168. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/Column.py +0 -0
  169. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/ColumnType.py +0 -0
  170. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/CreateProjectionRequest.py +0 -0
  171. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/CreateSchemaRequest.py +0 -0
  172. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/GetProjectionTableStatsResponse.py +0 -0
  173. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/GetTableStatsResponse.py +0 -0
  174. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/ImportDataRequest.py +0 -0
  175. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/ListProjectionsResponse.py +0 -0
  176. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/ListSchemasResponse.py +0 -0
  177. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/ListTablesResponse.py +0 -0
  178. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/ObjectDetails.py +0 -0
  179. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/S3File.py +0 -0
  180. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/VipRange.py +0 -0
  181. {vastdb-0.1.0 → vastdb-0.1.2}/vast_flatbuf/tabular/__init__.py +0 -0
  182. {vastdb-0.1.0/vastdb/tests → vastdb-0.1.2/vastdb/bench}/__init__.py +0 -0
  183. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb.egg-info/dependency_links.txt +0 -0
  184. {vastdb-0.1.0 → vastdb-0.1.2}/vastdb.egg-info/top_level.txt +0 -0
@@ -0,0 +1,113 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
+
7
+ ## [0.1.2] (2024-04-25)
8
+ [0.1.2]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.1...v0.1.2
9
+
10
+ ### Added
11
+ - Allow querying [VAST Catalog](https://www.vastdata.com/blog/vast-catalog-treat-your-file-system-like-a-database)
12
+ - Use [mypy](https://mypy-lang.org/) for type annotation checking
13
+
14
+ ### Fixed
15
+ - Fix handling HTTPS endpoints [#50]
16
+ - Optimize `Table.select()` performance
17
+ - Use `GET` request to retrieve cluster version
18
+ - Enable `ruff` preview mode
19
+ - Make sure DuckDB integration fails gracefully when transaction is closed prematurely
20
+
21
+ ### Removed
22
+ - Don't return row IDs from `Table.insert()`
23
+
24
+ ## [0.1.1] (2024-04-15)
25
+ [0.1.1]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.0...v0.1.1
26
+
27
+ ### Added
28
+ - Support date & timestamp predicate pushdown [#25]
29
+
30
+ ### Fixed
31
+ - Add missing `requirements.txt` file to released tarball [#47]
32
+
33
+ ## [0.1.0] (2024-04-11)
34
+ [0.1.0]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.5.3...v0.1.0
35
+
36
+ ### Added
37
+ - Transactions are implemented using [context managers](https://docs.python.org/3/library/stdtypes.html#typecontextmanager)
38
+ - Database entities are derived from a specific transaction
39
+ - Predicate pushdown is using [ibis](https://ibis-project.org/)-like expressions
40
+ - Public SDK [test suite](vastdb/tests/)
41
+ - Internal CI with Python 3.9 - 3.12
42
+ - Using [`ruff`](https://github.com/astral-sh/ruff) for linting and code formatting
43
+ - Improved [`README.md`](README.md) with new API examples
44
+
45
+ ### Removed
46
+
47
+ - Old SDK classes and methods are deprecated
48
+
49
+ ## [0.0.5.3] (2024-03-24)
50
+ [0.0.5.3]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.5.2...v0.0.5.3
51
+
52
+ ### Added
53
+ - Allow changing default max list_columns page size [#43]
54
+
55
+ ### Fixed
56
+ - Fixing insert function to use the correct tx while listing columns [#42]
57
+
58
+ ## [0.0.5.2] (2024-03-19)
59
+ [0.0.5.2]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.5.1...v0.0.5.2
60
+
61
+ ### Added
62
+ - Support retrieving row IDs via `VastdbApi.query()` [#31]
63
+
64
+ ### Fixed
65
+ - Fixed several functions that didn't use the correct txid [#30]
66
+ - Fix graceful cancellation for `VastdbApi.query_iterator()` [#33]
67
+
68
+ ### Removed
69
+ - Remove `vast_protobuf` package and `protobuf` dependency [#29]
70
+
71
+
72
+ ## [0.0.5.1] (2024-03-01)
73
+ [0.0.5.1]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.5.0...v0.0.5.1
74
+
75
+ ### Fixed
76
+ - Support latest Python (3.11+) by not requiring too old dependencies. [#16]
77
+
78
+
79
+ ## [0.0.5.0] (2024-02-25)
80
+ [0.0.5.0]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.4.0...v0.0.5.0
81
+
82
+ ### Added
83
+ - Created a CHANGELOG
84
+
85
+ ### Fixed
86
+ - Wait until all files are processed during import
87
+ - Sync with internal `api.py` code
88
+
89
+
90
+ ## [0.0.4.0] (2024-02-14)
91
+ [0.0.4.0]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.2...v0.0.4.0
92
+
93
+ ### Added
94
+ - Allow creating a table using the schema of an existing Parquet file via `create_table_from_parquet_schema()`
95
+ - Allow inserting RecordBatch into DB via `insert()`
96
+
97
+ ### Changed
98
+ - Rename `vastdb_api` module to `api`
99
+
100
+ ### Fixed
101
+ - Fix `concurrent.futures` import error
102
+
103
+
104
+ [#16]: https://github.com/vast-data/vastdb_sdk/pull/16
105
+ [#25]: https://github.com/vast-data/vastdb_sdk/pull/25
106
+ [#29]: https://github.com/vast-data/vastdb_sdk/pull/29
107
+ [#30]: https://github.com/vast-data/vastdb_sdk/pull/30
108
+ [#31]: https://github.com/vast-data/vastdb_sdk/pull/31
109
+ [#33]: https://github.com/vast-data/vastdb_sdk/pull/33
110
+ [#42]: https://github.com/vast-data/vastdb_sdk/pull/42
111
+ [#43]: https://github.com/vast-data/vastdb_sdk/pull/43
112
+ [#47]: https://github.com/vast-data/vastdb_sdk/pull/47
113
+ [#50]: https://github.com/vast-data/vastdb_sdk/pull/50
@@ -0,0 +1 @@
1
+ include *.md LICENSE requirements.txt
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 0.1.0
3
+ Version: 0.1.2
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
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
-
@@ -1,5 +1,6 @@
1
1
  import os
2
- from setuptools import setup, find_packages
2
+
3
+ from setuptools import find_packages, setup
3
4
 
4
5
  long_description = """
5
6
  `vastdb` is a Python-based SDK designed for interacting
@@ -10,6 +11,7 @@ enabling schema and table management, efficient ingest, query and modification o
10
11
  For more details, see [our whitepaper](https://vastdata.com/whitepaper/#TheVASTDataBase).
11
12
  """
12
13
 
14
+
13
15
  def _get_version_suffix():
14
16
  import subprocess
15
17
 
@@ -17,6 +19,7 @@ def _get_version_suffix():
17
19
  print(f"Git commit: {commit}")
18
20
  return f".dev1+vast.{commit.decode()[:16]}"
19
21
 
22
+
20
23
  suffix = ''
21
24
  if os.environ.get('VASTDB_APPEND_VERSION_SUFFIX'):
22
25
  suffix = _get_version_suffix()
@@ -25,7 +28,7 @@ setup(
25
28
  name='vastdb',
26
29
  python_requires='>=3.9.0',
27
30
  description='VAST Data SDK',
28
- version='0.1.0' + suffix,
31
+ version='0.1.2' + suffix,
29
32
  url='https://github.com/vast-data/vastdb_sdk',
30
33
  author='VAST DATA',
31
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)
@@ -0,0 +1,29 @@
1
+ import logging
2
+ import time
3
+
4
+ import pyarrow as pa
5
+ import pytest
6
+
7
+ from vastdb import util
8
+ from vastdb.table import ImportConfig, QueryConfig
9
+
10
+ log = logging.getLogger(__name__)
11
+
12
+
13
+ @pytest.mark.benchmark
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'))]
16
+
17
+ with session.transaction() as tx:
18
+ b = tx.bucket(clean_bucket_name)
19
+ s = b.create_schema('s1')
20
+ t = util.create_table_from_files(s, 't1', files, config=ImportConfig(import_concurrency=8))
21
+ config = QueryConfig(num_splits=8, num_sub_splits=4)
22
+ s = time.time()
23
+ pa_table = pa.Table.from_batches(t.select(columns=['sid'], predicate=t['sid'] == 10033007, config=config))
24
+ e = time.time()
25
+ log.info("'SELECT sid from TABLE WHERE sid = 10033007' returned in %s seconds.", e - s)
26
+ if crater_path:
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")
29
+ assert pa_table.num_rows == 255_075
@@ -4,10 +4,14 @@ VAST S3 buckets can be used to create Database schemas and tables.
4
4
  It is possible to list and access VAST snapshots generated over a bucket.
5
5
  """
6
6
 
7
+ import logging
8
+ from dataclasses import dataclass
9
+ from typing import TYPE_CHECKING, List, Optional
10
+
7
11
  from . import errors, schema, transaction
8
12
 
9
- from dataclasses import dataclass
10
- import logging
13
+ if TYPE_CHECKING:
14
+ from .schema import Schema
11
15
 
12
16
  log = logging.getLogger(__name__)
13
17
 
@@ -27,30 +31,38 @@ class Bucket:
27
31
  name: str
28
32
  tx: "transaction.Transaction"
29
33
 
30
- def create_schema(self, path: str) -> "schema.Schema":
34
+ def create_schema(self, path: str, fail_if_exists=True) -> "Schema":
31
35
  """Create a new schema (a container of tables) under this bucket."""
36
+ if current := self.schema(path, fail_if_missing=False):
37
+ if fail_if_exists:
38
+ raise errors.SchemaExists(self.name, path)
39
+ else:
40
+ return current
32
41
  self.tx._rpc.api.create_schema(self.name, path, txid=self.tx.txid)
33
42
  log.info("Created schema: %s", path)
34
- return self.schema(path)
43
+ return self.schema(path) # type: ignore[return-value]
35
44
 
36
- def schema(self, path: str) -> "schema.Schema":
45
+ def schema(self, path: str, fail_if_missing=True) -> Optional["Schema"]:
37
46
  """Get a specific schema (a container of tables) under this bucket."""
38
47
  s = self.schemas(path)
39
48
  log.debug("schema: %s", s)
40
49
  if not s:
41
- raise errors.MissingSchema(self.name, path)
50
+ if fail_if_missing:
51
+ raise errors.MissingSchema(self.name, path)
52
+ else:
53
+ return None
42
54
  assert len(s) == 1, f"Expected to receive only a single schema, but got: {len(s)}. ({s})"
43
55
  log.debug("Found schema: %s", s[0].name)
44
56
  return s[0]
45
57
 
46
- def schemas(self, name: str = None) -> ["schema.Schema"]:
58
+ def schemas(self, name: Optional[str] = None) -> List["Schema"]:
47
59
  """List bucket's schemas."""
48
60
  schemas = []
49
61
  next_key = 0
50
62
  exact_match = bool(name)
51
63
  log.debug("list schemas param: schema=%s, exact_match=%s", name, exact_match)
52
64
  while True:
53
- bucket_name, curr_schemas, next_key, is_truncated, _ = \
65
+ _bucket_name, curr_schemas, next_key, is_truncated, _ = \
54
66
  self.tx._rpc.api.list_schemas(bucket=self.name, next_key=next_key, txid=self.tx.txid,
55
67
  name_prefix=name, exact_match=exact_match)
56
68
  if not curr_schemas:
@@ -61,7 +73,7 @@ class Bucket:
61
73
 
62
74
  return [schema.Schema(name=name, bucket=self) for name, *_ in schemas]
63
75
 
64
- def snapshots(self) -> [Snapshot]:
76
+ def snapshots(self) -> List[Snapshot]:
65
77
  """List bucket's snapshots."""
66
78
  snapshots = []
67
79
  next_key = 0
@@ -1,15 +1,19 @@
1
- import vastdb
1
+ import os
2
+ from pathlib import Path
2
3
 
3
- import pytest
4
4
  import boto3
5
- import os
5
+ import pytest
6
+
7
+ import vastdb
6
8
 
7
9
 
8
10
  def pytest_addoption(parser):
9
- parser.addoption("--tabular-bucket-name", help="Name of the S3 bucket with Tabular enabled", default = "vastdb")
10
- parser.addoption("--tabular-access-key", help="Access key with Tabular permissions (AWS_ACCESS_KEY_ID)", default = os.environ.get("AWS_ACCESS_KEY_ID", None))
11
- parser.addoption("--tabular-secret-key", help="Secret key with Tabular permissions (AWS_SECRET_ACCESS_KEY)" , default = os.environ.get("AWS_SECRET_ACCESS_KEY", None))
12
- parser.addoption("--tabular-endpoint-url", help="Tabular server endpoint", default = "http://localhost:9090")
11
+ parser.addoption("--tabular-bucket-name", help="Name of the S3 bucket with Tabular enabled", default="vastdb")
12
+ parser.addoption("--tabular-access-key", help="Access key with Tabular permissions (AWS_ACCESS_KEY_ID)", default=os.environ.get("AWS_ACCESS_KEY_ID", None))
13
+ parser.addoption("--tabular-secret-key", help="Secret key with Tabular permissions (AWS_SECRET_ACCESS_KEY)", default=os.environ.get("AWS_SECRET_ACCESS_KEY", None))
14
+ parser.addoption("--tabular-endpoint-url", help="Tabular server endpoint", default="http://localhost:9090")
15
+ parser.addoption("--data-path", help="Data files location", default=None)
16
+ parser.addoption("--crater-path", help="Save benchmark results in a dedicated location", default=None)
13
17
 
14
18
 
15
19
  @pytest.fixture(scope="session")
@@ -44,3 +48,13 @@ def s3(request):
44
48
  aws_access_key_id=request.config.getoption("--tabular-access-key"),
45
49
  aws_secret_access_key=request.config.getoption("--tabular-secret-key"),
46
50
  endpoint_url=request.config.getoption("--tabular-endpoint-url"))
51
+
52
+
53
+ @pytest.fixture(scope="function")
54
+ def parquets_path(request):
55
+ return Path(request.config.getoption("--data-path"))
56
+
57
+
58
+ @pytest.fixture(scope="function")
59
+ def crater_path(request):
60
+ return request.config.getoption("--crater-path")
@@ -1,9 +1,9 @@
1
1
  import logging
2
- import requests
3
2
  import xml.etree.ElementTree
4
-
5
- from enum import Enum
6
3
  from dataclasses import dataclass
4
+ from enum import Enum
5
+
6
+ import requests
7
7
 
8
8
 
9
9
  class HttpStatus(Enum):
@@ -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
@@ -88,6 +89,10 @@ class Missing(Exception):
88
89
  pass
89
90
 
90
91
 
92
+ class MissingTransaction(Missing):
93
+ pass
94
+
95
+
91
96
  @dataclass
92
97
  class MissingBucket(Missing):
93
98
  bucket: str
@@ -114,6 +119,23 @@ class MissingProjection(Missing):
114
119
  projection: str
115
120
 
116
121
 
122
+ class Exists(Exception):
123
+ pass
124
+
125
+
126
+ @dataclass
127
+ class SchemaExists(Exists):
128
+ bucket: str
129
+ schema: str
130
+
131
+
132
+ @dataclass
133
+ class TableExists(Exists):
134
+ bucket: str
135
+ schema: str
136
+ table: str
137
+
138
+
117
139
  ERROR_TYPES_MAP = {
118
140
  HttpStatus.BAD_REQUEST: BadRequest,
119
141
  HttpStatus.FOBIDDEN: Forbidden,
@@ -133,21 +155,22 @@ def from_response(res: requests.Response):
133
155
 
134
156
  log.debug("response: url='%s', code=%s, headers=%s, body='%s'", res.request.url, res.status_code, res.headers, res.text)
135
157
  # try to parse S3 XML response for the error details:
136
- code = None
137
- message = None
158
+ code_str = None
159
+ message_str = None
138
160
  if res.text:
139
161
  try:
140
162
  root = xml.etree.ElementTree.fromstring(res.text)
141
163
  code = root.find('Code')
142
- code = code.text if code is not None else None
164
+ code_str = code.text if code is not None else None
143
165
  message = root.find('Message')
144
- message = message.text if message is not None else None
166
+ message_str = message.text if message is not None else None
145
167
  except xml.etree.ElementTree.ParseError:
146
168
  log.debug("invalid XML: %r", res.text)
147
169
 
148
170
  kwargs = dict(
149
- code=code,
150
- message=message,
171
+ code=code_str,
172
+ message=message_str,
173
+ method=res.request.method,
151
174
  url=res.request.url,
152
175
  status=res.status_code,
153
176
  headers=res.headers,