pydiverse-common 0.3.0__tar.gz → 0.3.1__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 (42) hide show
  1. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/PKG-INFO +1 -1
  2. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/docs/source/changelog.md +3 -0
  3. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/pyproject.toml +1 -1
  4. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/dtypes.py +14 -4
  5. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.gitattributes +0 -0
  6. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.github/CODEOWNERS +0 -0
  7. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  8. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.github/dependabot.yml +0 -0
  9. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.github/workflows/release.yml +0 -0
  10. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.github/workflows/tests.yml +0 -0
  11. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.github/workflows/update-lockfiles.yml +0 -0
  12. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.gitignore +0 -0
  13. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.pre-commit-config.yaml +0 -0
  14. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/.readthedocs.yaml +0 -0
  15. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/LICENSE +0 -0
  16. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/README.md +0 -0
  17. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/docs/Makefile +0 -0
  18. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/docs/make.bat +0 -0
  19. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/docs/package/README.md +0 -0
  20. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/docs/source/conf.py +0 -0
  21. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/docs/source/index.md +0 -0
  22. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/docs/source/license.md +0 -0
  23. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/docs/source/reference/api.rst +0 -0
  24. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/pixi.lock +0 -0
  25. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/pixi.toml +0 -0
  26. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/pytest.ini +0 -0
  27. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/__init__.py +0 -0
  28. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/errors/__init__.py +0 -0
  29. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/util/__init__.py +0 -0
  30. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/util/computation_tracing.py +0 -0
  31. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/util/deep_map.py +0 -0
  32. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/util/deep_merge.py +0 -0
  33. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/util/disposable.py +0 -0
  34. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/util/hashing.py +0 -0
  35. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/util/import_.py +0 -0
  36. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/src/pydiverse/common/util/structlog.py +0 -0
  37. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/tests/conftest.py +0 -0
  38. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/tests/dtypes/test_dtype_pandas.py +0 -0
  39. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/tests/dtypes/test_dtype_polars.py +0 -0
  40. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/tests/dtypes/test_dtype_pyarrow.py +0 -0
  41. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/tests/dtypes/test_dtype_sqlalchemy.py +0 -0
  42. {pydiverse_common-0.3.0 → pydiverse_common-0.3.1}/tests/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydiverse-common
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Common functionality shared between pydiverse libraries
5
5
  Author: QuantCo, Inc.
6
6
  Author-email: Martin Trautmann <windiana@users.sf.net>, Finn Rudolph <finn.rudolph@t-online.de>
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.1 (2025-06-08)
4
+ - fixed some type conversions (mostly Duration)
5
+
3
6
  ## 0.3.0 (2025-06-08)
4
7
  - rename Uint type to UInt
5
8
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pydiverse-common"
3
- version = "0.3.0"
3
+ version = "0.3.1"
4
4
  description = "Common functionality shared between pydiverse libraries"
5
5
  authors = [
6
6
  { name = "QuantCo, Inc." },
@@ -70,6 +70,8 @@ class Dtype:
70
70
  return Time()
71
71
  if isinstance(sql_type, sqa.DateTime):
72
72
  return Datetime()
73
+ if isinstance(sql_type, sqa.Interval):
74
+ return Duration()
73
75
  if isinstance(sql_type, sqa.ARRAY):
74
76
  return List(Dtype.from_sql(sql_type.item_type.from_sql))
75
77
  if isinstance(sql_type, sqa.Null):
@@ -123,7 +125,10 @@ class Dtype:
123
125
  return Bool()
124
126
  if pd.api.types.is_datetime64_any_dtype(pandas_type):
125
127
  return Datetime()
126
- # we don't know any decimal dtype in pandas if column is not arrow backed
128
+ if pd.api.types.is_timedelta64_dtype(pandas_type):
129
+ return Duration()
130
+ # we don't know any decimal/time dtypes in pandas if column is not
131
+ # arrow backed
127
132
 
128
133
  raise TypeError
129
134
 
@@ -172,6 +177,8 @@ class Dtype:
172
177
  return Date()
173
178
  if pa.types.is_time(arrow_type):
174
179
  return Time()
180
+ if pa.types.is_duration(arrow_type):
181
+ return Duration()
175
182
  raise TypeError
176
183
 
177
184
  @staticmethod
@@ -225,6 +232,7 @@ class Dtype:
225
232
  Date(): sqa.Date(),
226
233
  Time(): sqa.Time(),
227
234
  Datetime(): sqa.DateTime(),
235
+ Duration(): sqa.Interval(),
228
236
  NullType(): sqa.types.NullType(),
229
237
  }[self]
230
238
 
@@ -263,8 +271,9 @@ class Dtype:
263
271
  String(): pd.StringDtype(),
264
272
  Bool(): pd.BooleanDtype(),
265
273
  Date(): "datetime64[s]",
266
- # Time() not supported
267
274
  Datetime(): "datetime64[us]",
275
+ Time(): "timedelta64[us]",
276
+ Duration(): "timedelta64[us]",
268
277
  }[self]
269
278
 
270
279
  def to_arrow(self):
@@ -289,6 +298,7 @@ class Dtype:
289
298
  Date(): pa.date32(),
290
299
  Time(): pa.time64("us"),
291
300
  Datetime(): pa.timestamp("us"),
301
+ Duration(): pa.duration("us"),
292
302
  }[self]
293
303
 
294
304
  def to_polars(self: "Dtype"):
@@ -311,8 +321,8 @@ class Dtype:
311
321
  String(): pl.Utf8,
312
322
  Bool(): pl.Boolean,
313
323
  Datetime(): pl.Datetime("us"),
314
- Duration(): pl.Duration,
315
- Time(): pl.Time,
324
+ Duration(): pl.Duration("us"),
325
+ Time(): pl.Time, # Polars uses nanoseconds since midnight
316
326
  Date(): pl.Date,
317
327
  NullType(): pl.Null,
318
328
  }[self]