pydiverse-common 0.3.11__tar.gz → 0.3.13__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 (48) hide show
  1. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/PKG-INFO +1 -1
  2. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/pyproject.toml +10 -1
  3. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/dtypes.py +9 -2
  4. pydiverse_common-0.3.13/src/pydiverse/common/py.typed +1 -0
  5. pydiverse_common-0.3.11/.gitattributes +0 -8
  6. pydiverse_common-0.3.11/.github/CODEOWNERS +0 -1
  7. pydiverse_common-0.3.11/.github/PULL_REQUEST_TEMPLATE.md +0 -8
  8. pydiverse_common-0.3.11/.github/dependabot.yml +0 -10
  9. pydiverse_common-0.3.11/.github/scripts/check_deps.sh +0 -22
  10. pydiverse_common-0.3.11/.github/workflows/release.yml +0 -64
  11. pydiverse_common-0.3.11/.github/workflows/tests.yml +0 -53
  12. pydiverse_common-0.3.11/.github/workflows/update-lockfiles.yml +0 -36
  13. pydiverse_common-0.3.11/.pre-commit-config.yaml +0 -74
  14. pydiverse_common-0.3.11/.readthedocs.yaml +0 -17
  15. pydiverse_common-0.3.11/README.md +0 -71
  16. pydiverse_common-0.3.11/docs/Makefile +0 -23
  17. pydiverse_common-0.3.11/docs/make.bat +0 -35
  18. pydiverse_common-0.3.11/docs/source/changelog.md +0 -61
  19. pydiverse_common-0.3.11/docs/source/conf.py +0 -204
  20. pydiverse_common-0.3.11/docs/source/index.md +0 -60
  21. pydiverse_common-0.3.11/docs/source/license.md +0 -5
  22. pydiverse_common-0.3.11/docs/source/reference/api.rst +0 -55
  23. pydiverse_common-0.3.11/pixi.lock +0 -18344
  24. pydiverse_common-0.3.11/pixi.toml +0 -95
  25. pydiverse_common-0.3.11/pytest.ini +0 -3
  26. pydiverse_common-0.3.11/tests/conftest.py +0 -31
  27. pydiverse_common-0.3.11/tests/dtypes/test_dtype_pandas.py +0 -210
  28. pydiverse_common-0.3.11/tests/dtypes/test_dtype_polars.py +0 -116
  29. pydiverse_common-0.3.11/tests/dtypes/test_dtype_pyarrow.py +0 -162
  30. pydiverse_common-0.3.11/tests/dtypes/test_dtype_sqlalchemy.py +0 -134
  31. pydiverse_common-0.3.11/tests/test_util.py +0 -198
  32. pydiverse_common-0.3.11/tests/test_version.py +0 -8
  33. pydiverse_common-0.3.11/typos.toml +0 -2
  34. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/.gitignore +0 -0
  35. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/LICENSE +0 -0
  36. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/docs/package/README.md +0 -0
  37. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/__init__.py +0 -0
  38. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/errors/__init__.py +0 -0
  39. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/testing.py +0 -0
  40. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/util/__init__.py +0 -0
  41. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/util/computation_tracing.py +0 -0
  42. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/util/deep_map.py +0 -0
  43. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/util/deep_merge.py +0 -0
  44. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/util/disposable.py +0 -0
  45. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/util/hashing.py +0 -0
  46. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/util/import_.py +0 -0
  47. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/util/structlog.py +0 -0
  48. {pydiverse_common-0.3.11 → pydiverse_common-0.3.13}/src/pydiverse/common/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydiverse-common
3
- Version: 0.3.11
3
+ Version: 0.3.13
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,6 +1,6 @@
1
1
  [project]
2
2
  name = "pydiverse-common"
3
- version = "0.3.11"
3
+ version = "0.3.13"
4
4
  description = "Common functionality shared between pydiverse libraries"
5
5
  authors = [
6
6
  { name = "QuantCo, Inc." },
@@ -29,6 +29,15 @@ dependencies = ["python-box >=7.3.2,<8"]
29
29
 
30
30
  [tool.hatch.build.targets.wheel]
31
31
  packages = ["src/pydiverse"]
32
+ include = [
33
+ "src/pydiverse/common/py.typed", # ensure the marker is shipped
34
+ ]
35
+
36
+ [tool.hatch.build.targets.sdist]
37
+ include = [
38
+ "src/pydiverse/**", # ship package sources
39
+ "src/pydiverse/common/py.typed", # be explicit for sdists too
40
+ ]
32
41
 
33
42
  [tool.ruff]
34
43
  target-version = "py310"
@@ -311,6 +311,15 @@ class Dtype:
311
311
 
312
312
  if isinstance(self, Enum):
313
313
  return pd.CategoricalDtype(self.categories)
314
+ if isinstance(self, String):
315
+ return pd.StringDtype() # max_length not needed for dataframes
316
+ if isinstance(self, Decimal):
317
+ # NumericDtype exists but is not used because fixpoint is more common
318
+ # in SQL than in dataframes.
319
+ return pd.Float64Dtype()
320
+ if isinstance(self, List):
321
+ # we don't want to produce object columns
322
+ raise TypeError("pandas doesn't have a native list dtype")
314
323
 
315
324
  return {
316
325
  Int(): pd.Int64Dtype(), # we default to 64 bit
@@ -325,8 +334,6 @@ class Dtype:
325
334
  Float(): pd.Float64Dtype(), # we default to 64 bit
326
335
  Float32(): pd.Float32Dtype(),
327
336
  Float64(): pd.Float64Dtype(),
328
- Decimal(): pd.Float64Dtype(), # NumericDtype exists but is not used
329
- String(): pd.StringDtype(),
330
337
  Bool(): pd.BooleanDtype(),
331
338
  Date(): "datetime64[s]",
332
339
  Datetime(): "datetime64[us]",
@@ -0,0 +1 @@
1
+ partial
@@ -1,8 +0,0 @@
1
- * text=auto
2
-
3
- *.{diff,patch} binary
4
-
5
- *.{py,yaml,yml,sh} text eol=lf
6
- *.bat text eol=crlf
7
-
8
- pixi.lock merge=binary linguist-language=YAML linguist-generated=true
@@ -1 +0,0 @@
1
- * @pydiverse/code-owners
@@ -1,8 +0,0 @@
1
- <!--
2
- Thank you for pull request.
3
- Below are a few things we ask you kindly to self-check before getting a review. Remove checks that are not relevant.
4
- -->
5
-
6
- # Checklist
7
-
8
- - [ ] Added a `docs/source/changelog.md` entry
@@ -1,10 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: github-actions
4
- directory: /
5
- schedule:
6
- interval: monthly
7
- groups:
8
- gh-actions:
9
- patterns:
10
- - "*"
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- set -euo pipefail
4
-
5
- contains_dependency_all=true
6
-
7
- while read -r package version; do
8
- if [[ $package == "python" ]]; then
9
- continue
10
- fi
11
-
12
- dependency="${package} ${version}"
13
- contains_dependency=$(yq -r ".project.dependencies | map(. == \"${dependency}\") | any" pyproject.toml)
14
- if [[ $contains_dependency == "false" ]]; then
15
- echo "${dependency} not found in pyproject.toml"
16
- contains_dependency_all=false
17
- fi
18
- done < <(yq -r '.dependencies | to_entries | .[] | "\(.key) \(.value)"' pixi.toml)
19
-
20
- if [[ $contains_dependency_all == "false" ]]; then
21
- exit 1
22
- fi
@@ -1,64 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- tags:
8
- - '*.*.*'
9
- pull_request:
10
-
11
- jobs:
12
- build:
13
- name: Build Package
14
- runs-on: ubuntu-latest
15
- steps:
16
- - name: Checkout branch
17
- uses: actions/checkout@v4
18
-
19
- - name: Set up pixi
20
- uses: prefix-dev/setup-pixi@v0.8.14
21
- with:
22
- environments: release
23
-
24
- - name: Ensure tag matches version
25
- if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
26
- run: |
27
- version="$(pixi exec -s go-yq -- yq .project.version pyproject.toml)"
28
- tag="${{ github.ref_name }}"
29
- if [ "$version" != "$tag" ]; then
30
- echo "Tag $tag does not match version $version"
31
- exit 1
32
- fi
33
-
34
- - name: Build
35
- run: pixi run -e release hatch build
36
-
37
- - name: Check build
38
- run: pixi run -e release twine check dist/*
39
-
40
- - name: List files
41
- run: ls -l dist/
42
-
43
- - name: Upload package
44
- uses: actions/upload-artifact@v4
45
- with:
46
- name: artifact
47
- path: dist/*
48
-
49
- release:
50
- name: Publish Package
51
- if: startsWith(github.ref, 'refs/tags/')
52
- needs: [build]
53
- runs-on: ubuntu-latest
54
- permissions:
55
- id-token: write
56
- contents: write
57
- environment: pypi
58
- steps:
59
- - uses: actions/download-artifact@v4
60
- with:
61
- name: artifact
62
- path: dist
63
- - name: Publish package on PyPi
64
- uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc
@@ -1,53 +0,0 @@
1
- name: Tests
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- pull_request:
8
- paths-ignore:
9
- - "docs/**"
10
-
11
- jobs:
12
- lint:
13
- name: Pre-commit Checks
14
- timeout-minutes: 5
15
- runs-on: ubuntu-latest
16
- steps:
17
- - name: Checkout branch
18
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
19
- - name: Set up pixi
20
- uses: prefix-dev/setup-pixi@8ca4608ef7f4daeb54f5205b20d0b7cb42f11143 # v0.8.1
21
- - name: Install repository
22
- # needed for generate-col-ops hook
23
- run: pixi run postinstall
24
- - name: pre-commit
25
- run: pixi run pre-commit run -a --color=always --show-diff-on-failure
26
- - name: Check pyproject.toml dependencies
27
- run: pixi run check-deps
28
- test:
29
- name: pytest
30
- runs-on: ${{ matrix.os }}
31
- strategy:
32
- matrix:
33
- os:
34
- - ubuntu-latest
35
- environment:
36
- - py310
37
- - py313
38
- - py310all
39
- - py311all
40
- - py312all
41
- - py313all
42
- timeout-minutes: 5
43
- steps:
44
- - uses: actions/checkout@v4
45
-
46
- - name: Setup Pixi
47
- uses: prefix-dev/setup-pixi@v0.8.14
48
- with:
49
- environments: ${{ matrix.environment }}
50
-
51
- - name: Run tests
52
- run: |
53
- pixi run -e ${{ matrix.environment }} pytest tests -ra ${RUNNER_DEBUG:+-v} --color=yes
@@ -1,36 +0,0 @@
1
- name: Update lockfiles
2
-
3
- permissions:
4
- contents: write
5
- pull-requests: write
6
-
7
- on:
8
- workflow_dispatch:
9
- schedule:
10
- - cron: 0 5 1 * *
11
-
12
- jobs:
13
- pixi-update:
14
- runs-on: ubuntu-latest
15
- steps:
16
- - uses: actions/checkout@v4
17
- - name: Set up pixi
18
- uses: prefix-dev/setup-pixi@v0.8.14
19
- with:
20
- run-install: false
21
- - name: Update lockfiles
22
- run: |
23
- set -euo pipefail
24
- pixi update --json | pixi exec pixi-diff-to-markdown >> diff.md
25
- - name: Create pull request
26
- uses: peter-evans/create-pull-request@v7
27
- with:
28
- token: ${{ secrets.GITHUB_TOKEN }}
29
- commit-message: Update pixi lockfile
30
- title: Update pixi lockfile
31
- body-path: diff.md
32
- branch: update-pixi
33
- base: main
34
- labels: pixi
35
- delete-branch: true
36
- add-paths: pixi.lock
@@ -1,74 +0,0 @@
1
- exclude: ^.pixi$
2
- repos:
3
- - repo: local
4
- hooks:
5
- # ensure pixi environments are up to date
6
- # workaround for https://github.com/prefix-dev/pixi/issues/1482
7
- - id: pixi-install
8
- name: pixi-install
9
- entry: pixi install -e default
10
- language: system
11
- always_run: true
12
- require_serial: true
13
- pass_filenames: false
14
- # ruff
15
- - id: ruff
16
- name: ruff
17
- entry: pixi run -e lint ruff check --fix --exit-non-zero-on-fix --force-exclude
18
- language: system
19
- types_or: [python, pyi]
20
- require_serial: true
21
- - id: ruff-format
22
- name: ruff-format
23
- entry: pixi run -e lint ruff format --force-exclude
24
- language: system
25
- types_or: [python, pyi]
26
- require_serial: true
27
- # mypy
28
- # - id: mypy
29
- # name: mypy
30
- # entry: pixi run -e lint mypy
31
- # language: system
32
- # types: [python]
33
- # require_serial: true
34
- # taplo
35
- - id: taplo
36
- name: taplo
37
- entry: pixi run -e lint taplo format
38
- language: system
39
- types: [toml]
40
- # pre-commit-hooks
41
- - id: trailing-whitespace-fixer
42
- name: trailing-whitespace-fixer
43
- entry: pixi run -e lint trailing-whitespace-fixer
44
- language: system
45
- types: [text]
46
- - id: end-of-file-fixer
47
- name: end-of-file-fixer
48
- entry: pixi run -e lint end-of-file-fixer
49
- language: system
50
- types: [text]
51
- - id: check-merge-conflict
52
- name: check-merge-conflict
53
- entry: pixi run -e lint check-merge-conflict --assume-in-merge
54
- language: system
55
- types: [text]
56
- exclude: ".rst$"
57
- # typos
58
- - id: typos
59
- name: typos
60
- entry: pixi run -e lint typos --force-exclude
61
- language: system
62
- types: [text]
63
- require_serial: true
64
- # insert-license
65
- - id: insert-license
66
- name: insert-license
67
- entry: >-
68
- pixi run -e lint
69
- insert-license
70
- --license-base64 Q29weXJpZ2h0IChjKSBRdWFudENvIGFuZCBweWRpdmVyc2UgY29udHJpYnV0b3JzIDIwMjUtMjAyNQpTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCg==
71
- --dynamic-years
72
- --comment-style "#"
73
- language: system
74
- types: [python]
@@ -1,17 +0,0 @@
1
- # Read the Docs configuration file
2
- # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
-
4
- version: 2
5
- build:
6
- os: ubuntu-22.04
7
- tools:
8
- python: mambaforge-latest
9
- commands:
10
- - mamba install -c conda-forge -c nodefaults pixi
11
- - pixi run -e docs postinstall
12
- - pixi run -e docs docs
13
- - pixi run -e docs readthedocs
14
- sphinx:
15
- configuration: docs/source/conf.py
16
- formats:
17
- - pdf
@@ -1,71 +0,0 @@
1
- # pydiverse.common
2
-
3
- [![CI](https://img.shields.io/github/actions/workflow/status/pydiverse/pydiverse.common/tests.yml?style=flat-square&branch=main&label=tests)](https://github.com/pydiverse/pydiverse.common/actions/workflows/tests.yml)
4
- [![Docs](https://readthedocs.org/projects/pydiversecommon/badge/?version=latest&style=flat-square)](https://pydiversecommon.readthedocs.io/en/latest)
5
- [![pypi-version](https://img.shields.io/pypi/v/pydiverse-common.svg?logo=pypi&logoColor=white&style=flat-square)](https://pypi.org/project/pydiverse-common)
6
- [![conda-forge](https://img.shields.io/conda/pn/conda-forge/pydiverse-common?logoColor=white&logo=conda-forge&style=flat-square)](https://prefix.dev/channels/conda-forge/packages/pydiverse-common)
7
-
8
- A base package for different libraries in the pydiverse library collection.
9
- This includes functionality like a type-system for tabular data (SQL and DataFrame).
10
- This type-system is used for ensuring reliable operation of the pydiverse library
11
- with various execution backends like Pandas, Polars, and various SQL dialects.
12
-
13
- ## Installation
14
-
15
- To install pydiverse common try this:
16
-
17
- ```bash
18
- git clone https://github.com/pydiverse/pydiverse.common.git
19
- cd pydiverse.common
20
-
21
- # Create the environment, activate it and install the pre-commit hooks
22
- pixi install
23
- pixi run pre-commit install
24
- ```
25
-
26
- ## Testing
27
-
28
- Tests can be run with:
29
-
30
- ```bash
31
- pixi run pytest
32
- ```
33
-
34
- ## Packaging and publishing to pypi and conda-forge using github actions
35
-
36
- - bump version number in [pyproject.toml](pyproject.toml)
37
- - set correct release date in [changelog.md](docs/source/changelog.md)
38
- - push increased version number to `main` branch
39
- - tag commit with `git tag <version>`, e.g. `git tag 0.7.0`
40
- - `git push --tags`
41
-
42
- The package should appear on https://pypi.org/project/pydiverse-common/ in a timely manner. It is normal that it takes
43
- a few hours until the new package version is available on https://conda-forge.org/packages/.
44
-
45
- ### Packaging and publishing to Pypi manually
46
-
47
- Packages are first released on test.pypi.org:
48
-
49
- - bump version number in [pyproject.toml](pyproject.toml) (check consistency with [changelog.md](docs/source/changelog.md))
50
- - push increased version number to `main` branch
51
- - `pixi run -e release hatch build`
52
- - `pixi run -e release twine upload --repository testpypi dist/*`
53
- - verify with https://test.pypi.org/search/?q=pydiverse.common
54
-
55
- Finally, they are published via:
56
-
57
- - `git tag <version>`
58
- - `git push --tags`
59
- - Attention: Please, only continue here, if automatic publishing fails for some reason!
60
- - `pixi run -e release hatch build`
61
- - `pixi run -e release twine upload --repository pypi dist/*`
62
-
63
- ### Publishing package on conda-forge manually
64
-
65
- Conda-forge packages are updated via:
66
-
67
- - Attention: Please, only continue here, if automatic conda-forge publishing fails for longer than 24h!
68
- - https://github.com/conda-forge/pydiverse-common-feedstock#updating-pydiverse-common-feedstock
69
- - update `recipe/meta.yaml`
70
- - test meta.yaml in pydiverse common repo: `conda-build build ../pydiverse-common-feedstock/recipe/meta.yaml`
71
- - commit `recipe/meta.yaml` to branch of fork and submit PR
@@ -1,23 +0,0 @@
1
- # Minimal makefile for Sphinx documentation
2
- #
3
-
4
- # You can set these variables from the command line, and also
5
- # from the environment for the first two.
6
- SPHINXOPTS ?=
7
- SPHINXBUILD ?= sphinx-build
8
- SOURCEDIR = source
9
- BUILDDIR = build
10
-
11
- # Put it first so that "make" without argument is like "make help".
12
- help:
13
- @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
-
15
- .PHONY: help Makefile
16
-
17
- # Catch-all target: route all unknown targets to Sphinx using the new
18
- # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
- %: Makefile
20
- @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
21
-
22
- livehtml:
23
- sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) --watch ../src $(O)
@@ -1,35 +0,0 @@
1
- @ECHO OFF
2
-
3
- pushd %~dp0
4
-
5
- REM Command file for Sphinx documentation
6
-
7
- if "%SPHINXBUILD%" == "" (
8
- set SPHINXBUILD=sphinx-build
9
- )
10
- set SOURCEDIR=source
11
- set BUILDDIR=build
12
-
13
- %SPHINXBUILD% >NUL 2>NUL
14
- if errorlevel 9009 (
15
- echo.
16
- echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
17
- echo.installed, then set the SPHINXBUILD environment variable to point
18
- echo.to the full path of the 'sphinx-build' executable. Alternatively you
19
- echo.may add the Sphinx directory to PATH.
20
- echo.
21
- echo.If you don't have Sphinx installed, grab it from
22
- echo.https://www.sphinx-doc.org/
23
- exit /b 1
24
- )
25
-
26
- if "%1" == "" goto help
27
-
28
- %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
- goto end
30
-
31
- :help
32
- %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
-
34
- :end
35
- popd
@@ -1,61 +0,0 @@
1
- # Changelog
2
-
3
- ## 0.3.11 (2025-08-21)
4
- - fixed __eq__, __hash__, and __repr__ for types with parameters
5
- - import string length from sqlalchemy VARCHAR(n) type
6
-
7
- ## 0.3.10 (2025-08-21)
8
- - implemented String with max_length argument for SQL VARCHAR(n) generation
9
- - implemented Decimal with precision and scale arguments
10
-
11
- ## 0.3.9 (2025-08-21)
12
- - fix enum pyarrow dtype
13
-
14
- ## 0.3.8 (2025-08-19)
15
- - fixed util.hashing.hash_polars_dataframe for simple dataframe
16
-
17
- ## 0.3.7 (2025-08-19)
18
- - support util.hashing.hash_polars_dataframe
19
-
20
- ## 0.3.6 (2025-08-01)
21
- - hack structlog / dask / pytest capture incompatibility
22
- (structlog._output.stderr != sys.stderr leads to pickle error)
23
-
24
- ## 0.3.5 (2025-06-27)
25
- - added enum type
26
-
27
- ## 0.3.4 (2025-06-10)
28
- - fixed pypi package dependencies
29
-
30
- ## 0.3.3 (2025-06-08)
31
- - improved support of None and List type
32
- - bug fixes in type conversion functions
33
-
34
- ## 0.3.2 (2025-06-08)
35
- - pydiverse.common.__version__ (implemented via importlib.metadata)
36
-
37
- ## 0.3.1 (2025-06-08)
38
- - fixed some type conversions (mostly Duration)
39
-
40
- ## 0.3.0 (2025-06-08)
41
- - rename Uint type to UInt
42
-
43
- ## 0.2.1 (2025-06-06)
44
- - also support to_xxx() for generic Int and Float Dtype classes
45
-
46
- ## 0.2.0 (2025-06-06)
47
- - moved many utility functions from `pydiverse.pipedag` to `pydiverse.common`;
48
- this includes deep_map, ComputationTracer, @disposable, @requires, stable_hash,
49
- load_object, and structlog initialization
50
- - Decimal becomes subtype of Float
51
-
52
- ## 0.1.0 (2022-09-01)
53
- Initial release.
54
-
55
- - `@materialize` annotations
56
- - flow definition with nestable stages
57
- - zookeeper synchronization
58
- - postgres database backend
59
- - Prefect 1.x and 2.x support
60
- - multi-processing/multi-node support for state exchange between `@materialize` tasks
61
- - support materialization for: pandas, sqlalchemy, raw sql text, pydiverse.transform