nextpipe 0.3.2.dev1__tar.gz → 0.3.3.dev0__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 (79) hide show
  1. nextpipe-0.3.3.dev0/.github/workflows/release.yml +58 -0
  2. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/PKG-INFO +1 -1
  3. nextpipe-0.3.3.dev0/RELEASE.md +19 -0
  4. nextpipe-0.3.3.dev0/nextpipe/__about__.py +1 -0
  5. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/__init__.py +1 -0
  6. nextpipe-0.3.2.dev1/.github/filters.yml +0 -2
  7. nextpipe-0.3.2.dev1/.github/workflows/release.yml +0 -189
  8. nextpipe-0.3.2.dev1/nextpipe/__about__.py +0 -1
  9. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/.github/workflows/lint.yml +0 -0
  10. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/.github/workflows/test.yml +0 -0
  11. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/.gitignore +0 -0
  12. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/.markdownlint.jsonc +0 -0
  13. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/.nextmv/bump_requirements.sh +0 -0
  14. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/.prettierrc.yml +0 -0
  15. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/.readthedocs.yaml +0 -0
  16. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/LICENSE.md +0 -0
  17. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/README.md +0 -0
  18. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/examples/basic-chained-workflow.md +0 -0
  19. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/examples/complex-workflow-csv.md +0 -0
  20. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/examples/complex-workflow.md +0 -0
  21. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/examples/ensemble-workflow.md +0 -0
  22. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/examples/fanout-workflow.md +0 -0
  23. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/images/logo-180.png +0 -0
  24. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/images/nextmv-favicon.svg +0 -0
  25. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/images/routing-ortools-pyvroom-selected.png +0 -0
  26. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/images/routing-selected.png +0 -0
  27. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/index.md +0 -0
  28. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/reference/config.md +0 -0
  29. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/reference/decorators.md +0 -0
  30. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/reference/flow.md +0 -0
  31. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/reference/graph.md +0 -0
  32. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/reference/schema.md +0 -0
  33. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/reference/threads.md +0 -0
  34. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/reference/uplink.md +0 -0
  35. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/reference/utils.md +0 -0
  36. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/requirements.txt +0 -0
  37. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/tutorials/echo.md +0 -0
  38. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/docs/tutorials/getting-started.md +0 -0
  39. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/mkdocs.yml +0 -0
  40. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/config.py +0 -0
  41. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/decorators.py +0 -0
  42. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/flow.py +0 -0
  43. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/graph.py +0 -0
  44. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/schema.py +0 -0
  45. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/threads.py +0 -0
  46. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/uplink.py +0 -0
  47. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe/utils.py +0 -0
  48. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/nextpipe.code-workspace +0 -0
  49. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/pyproject.toml +0 -0
  50. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/.gitignore +0 -0
  51. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/README.md +0 -0
  52. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/__init__.py +0 -0
  53. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/apps/echo/.gitignore +0 -0
  54. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/apps/echo/README.md +0 -0
  55. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/apps/echo/app.yaml +0 -0
  56. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/apps/echo/main.py +0 -0
  57. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/apps/echo/requirements.txt +0 -0
  58. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/deploy/app.yaml +0 -0
  59. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/deploy/main.py +0 -0
  60. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/deploy/requirements.txt +0 -0
  61. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/chain.json +0 -0
  62. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/chain.json.golden +0 -0
  63. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/chain.py +0 -0
  64. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/complex.json +0 -0
  65. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/complex.json.golden +0 -0
  66. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/complex.py +0 -0
  67. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/fail.py +0 -0
  68. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/foreach-2-pred.json +0 -0
  69. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/foreach-2-pred.json.golden +0 -0
  70. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/foreach-2-pred.py +0 -0
  71. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/foreach.json +0 -0
  72. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/foreach.json.golden +0 -0
  73. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/pipelines/foreach.py +0 -0
  74. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/test_graph.py +0 -0
  75. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/test_integration.py +0 -0
  76. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/test_schema.py +0 -0
  77. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/test_threads.py +0 -0
  78. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/test_uplink.py +0 -0
  79. {nextpipe-0.3.2.dev1 → nextpipe-0.3.3.dev0}/tests/test_version.py +0 -0
@@ -0,0 +1,58 @@
1
+ name: release
2
+ run-name: Release by @${{ github.actor }} from ${{ github.ref_name }}
3
+
4
+ on: [push]
5
+
6
+ jobs:
7
+ release:
8
+ if: ${{ github.ref_type == 'branch' }}
9
+ uses: nextmv-io/release/.github/workflows/release.yml@develop
10
+ with:
11
+ BRANCH: ${{ github.ref_name }}
12
+ REPOSITORY: nextpipe
13
+ LANGUAGE: python
14
+ PACKAGE_NAME: nextpipe
15
+ PACKAGE_LOCATION: .
16
+ VERSION_FILE: __about__.py
17
+ secrets: inherit
18
+
19
+ publish: # Unfortunately, PyPI publishing does not support reusable workflows, so we must publish here.
20
+ needs: release
21
+ if: ${{ needs.release.outputs.RELEASE_NEEDED == 'true' }}
22
+ runs-on: ubuntu-latest
23
+ environment:
24
+ name: pypi
25
+ url: https://pypi.org/p/nextpipe
26
+ permissions:
27
+ id-token: write # This is required for trusted publishing to PyPI
28
+ steps:
29
+ - name: git clone ${{ github.ref_name }}
30
+ uses: actions/checkout@v4
31
+ with:
32
+ ref: ${{ github.ref_name }}
33
+
34
+ - name: set up Python
35
+ uses: actions/setup-python@v5
36
+
37
+ - name: install dependencies
38
+ run: |
39
+ pip install --upgrade pip
40
+ pip install build hatch
41
+
42
+ - name: python - build binary wheel and source tarball
43
+ run: python -m build
44
+
45
+ - name: python - publish package distributions to PyPI
46
+ uses: pypa/gh-action-pypi-publish@release/v1
47
+ with:
48
+ packages-dir: ./dist
49
+
50
+ notify:
51
+ needs: [release, publish]
52
+ if: ${{ needs.release.outputs.RELEASE_NEEDED == 'true' && needs.release.outputs.SHOULD_NOTIFY_SLACK == 'true' }}
53
+ uses: nextmv-io/release/.github/workflows/notify-slack.yml@develop
54
+ with:
55
+ PACKAGE_NAME: nextpipe
56
+ VERSION: ${{ needs.release.outputs.VERSION }}
57
+ REPOSITORY: nextpipe
58
+ secrets: inherit
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nextpipe
3
- Version: 0.3.2.dev1
3
+ Version: 0.3.3.dev0
4
4
  Summary: Framework for Decision Pipeline modeling and execution
5
5
  Project-URL: Homepage, https://www.nextmv.io
6
6
  Project-URL: Documentation, https://nextpipe.docs.nextmv.io/en/latest/
@@ -0,0 +1,19 @@
1
+ # Release
2
+
3
+ A reusable workflow is used to release the package. Nextmv team members: please
4
+ go to the corresponding repository for more information.
5
+
6
+ ## Stable release
7
+
8
+ Open a PR against the `develop` branch with the following change:
9
+
10
+ * Update the version in the `nextpipe/__about__.py` file.
11
+
12
+ After the PR is merged, the `release.yml` workflow will be triggered and it
13
+ will automatically create a release and publish the package to PyPI.
14
+
15
+ ## Pre-release
16
+
17
+ Update the version in the `nextpipe/__about__.py` file to a dev tag. When a
18
+ commit is pushed, the `release.yml` workflow will be triggered and it will
19
+ automatically create a release and publish the package to PyPI.
@@ -0,0 +1 @@
1
+ __version__ = "v0.3.3-dev.0"
@@ -1,6 +1,7 @@
1
1
  """Framework for Decision Pipeline modeling and execution."""
2
2
 
3
3
  from .__about__ import __version__
4
+ from .config import Configuration as Configuration
4
5
  from .decorators import app as app
5
6
  from .decorators import foreach as foreach
6
7
  from .decorators import join as join
@@ -1,2 +0,0 @@
1
- nextpipe:
2
- - 'nextpipe/__about__.py'
@@ -1,189 +0,0 @@
1
- name: release
2
- run-name: Release ${{ inputs.VERSION }} by @${{ github.actor }} from ${{ github.ref_name }}
3
-
4
- on:
5
- workflow_dispatch:
6
- inputs:
7
- VERSION:
8
- description: "The version to release"
9
- required: true
10
- push:
11
-
12
- jobs:
13
- release:
14
- runs-on: ubuntu-latest
15
- env:
16
- VERSION: ${{ inputs.VERSION }}
17
- GH_TOKEN: ${{ github.token }}
18
- SSH_AUTH_SOCK: /tmp/ssh_agent.sock
19
- IS_AUTOMATED: true
20
- RELEASE_NEEDED: true
21
- IS_PRE_RELEASE: true
22
- permissions:
23
- contents: write # Required for creating releases and tags
24
- id-token: write # This is required for trusted publishing to PyPI
25
- environment:
26
- name: pypi
27
- url: https://pypi.org/p/nextpipe
28
- steps:
29
- - name: set up Python
30
- uses: actions/setup-python@v5
31
- with:
32
- python-version: "3.13"
33
-
34
- - name: install dependencies
35
- run: |
36
- pip install --upgrade pip
37
- pip install build hatch
38
-
39
- - name: configure git with the bot credentials
40
- run: |
41
- mkdir -p ~/.ssh
42
- ssh-keyscan github.com >> ~/.ssh/known_hosts
43
- ssh-agent -a $SSH_AUTH_SOCK > /dev/null
44
- ssh-add - <<< "${{ secrets.NEXTMVBOT_SSH_KEY }}"
45
-
46
- echo "${{ secrets.NEXTMVBOT_SIGNING_KEY }}" > ~/.ssh/signing.key
47
- chmod 600 ~/.ssh/signing.key
48
-
49
- git config --global user.name "nextmv-bot"
50
- git config --global user.email "tech+gh-nextmv-bot@nextmv.io"
51
- git config --global gpg.format ssh
52
- git config --global user.signingkey ~/.ssh/signing.key
53
-
54
- git clone git@github.com:nextmv-io/nextpipe.git
55
- cd nextpipe
56
- git switch ${{ github.ref_name }}
57
-
58
- - name: check that a manual release cannot be done on develop
59
- if: ${{ env.IS_AUTOMATED == 'false' && github.ref_name == 'develop' }}
60
- run: |
61
- echo "Manual release cannot be done on develop"
62
- exit 1
63
-
64
- - name: set the automated flag based on workflow trigger
65
- run: |
66
- if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
67
- echo "IS_AUTOMATED=false" >> $GITHUB_ENV
68
- exit 0
69
- fi
70
-
71
- echo "IS_AUTOMATED=true" >> $GITHUB_ENV
72
-
73
- - name: set filters file for changed paths - automated mode
74
- if: ${{ env.IS_AUTOMATED == 'true' }}
75
- run: |
76
- FILTERS_FILE="./.github/filters.yml"
77
- touch $FILTERS_FILE
78
- echo "nextpipe:" >> $FILTERS_FILE
79
- echo " - 'nextpipe/__about__.py'" >> $FILTERS_FILE
80
-
81
- echo "Successfully created filters and wrote them to ${FILTERS_FILE}"
82
- cat $FILTERS_FILE
83
- working-directory: ./nextpipe
84
-
85
- - name: filter changed directories - automated mode
86
- if: ${{ env.IS_AUTOMATED == 'true' }}
87
- id: filter
88
- uses: dorny/paths-filter@v3
89
- with:
90
- filters: .github/filters.yml
91
- working-directory: ./nextpipe
92
-
93
- - name: determine if release is needed
94
- run: |
95
- echo "Checking if release is needed"
96
- echo "IS_AUTOMATED: ${{ env.IS_AUTOMATED }}"
97
- if [ "${{ env.IS_AUTOMATED }}" = "false" ]; then
98
- echo "RELEASE_NEEDED=true" >> $GITHUB_ENV
99
- echo "Manual mode - Release is needed"
100
- exit 0
101
- fi
102
-
103
- CHANGES=${{ steps.filter.outputs.changes }}
104
- echo "CHANGES: $CHANGES"
105
- if [ "$CHANGES" = "[]" ]; then
106
- echo "Automated mode - No changes detected"
107
- echo "RELEASE_NEEDED=false" >> $GITHUB_ENV
108
- echo "Automated mode - Release is not needed"
109
- exit 0
110
- fi
111
-
112
- echo "RELEASE_NEEDED=true" >> $GITHUB_ENV
113
- echo "Automated mode - Release is needed"
114
-
115
- - name: upgrade version with hatch - manual mode
116
- if: ${{ env.IS_AUTOMATED == 'false' && env.RELEASE_NEEDED == 'true' }}
117
- run: hatch version ${{ inputs.VERSION }}
118
- working-directory: ./nextpipe
119
-
120
- - name: set the package version
121
- if: ${{ env.RELEASE_NEEDED == 'true' }}
122
- run: |
123
- export VERSION="v$(hatch version)"
124
- echo "This is the version"
125
- echo $VERSION
126
- echo "VERSION=$VERSION" >> $GITHUB_ENV
127
-
128
- # Check if version is a pre-release
129
- if [[ "$VERSION" =~ (alpha|beta|rc|dev|pre|a|b) ]]; then
130
- echo "IS_PRE_RELEASE=true" >> $GITHUB_ENV
131
- echo "Detected pre-release version: $VERSION"
132
- exit 0
133
- fi
134
-
135
- echo "IS_PRE_RELEASE=false" >> $GITHUB_ENV
136
- echo "Detected stable release version: $VERSION"
137
- working-directory: ./nextpipe
138
-
139
- - name: bump version in requirements.txt
140
- if: ${{ env.RELEASE_NEEDED == 'true' }}
141
- run: |
142
- bash .nextmv/bump_requirements.sh ${{ env.VERSION }}
143
- working-directory: ./nextpipe
144
-
145
- - name: commit new version - manual mode
146
- if: ${{ env.IS_AUTOMATED == 'false' && env.RELEASE_NEEDED == 'true' }}
147
- run: |
148
- git add nextpipe/__about__.py
149
- git commit -S -m "Bump nextpipe version to ${{ env.VERSION }}"
150
- git push
151
- working-directory: ./nextpipe
152
-
153
- - name: tag new version
154
- if: ${{ env.RELEASE_NEEDED == 'true' }}
155
- run: |
156
- git tag ${{ env.VERSION }}
157
- git push origin ${{ env.VERSION }}
158
- working-directory: ./nextpipe
159
-
160
- - name: create release
161
- if: ${{ env.RELEASE_NEEDED == 'true' }}
162
- run: |
163
- PRERELEASE_FLAG=""
164
- if [ ${{ env.IS_PRE_RELEASE }} = true ]; then
165
- PRERELEASE_FLAG="--prerelease"
166
- fi
167
-
168
- gh release create $VERSION \
169
- --verify-tag \
170
- --generate-notes \
171
- --title $VERSION $PRERELEASE_FLAG
172
- working-directory: ./nextpipe
173
-
174
- - name: build binary wheel and source tarball
175
- if: ${{ env.RELEASE_NEEDED == 'true' }}
176
- run: python -m build
177
- working-directory: ./nextpipe
178
-
179
- - name: publish package distributions to PyPI
180
- if: ${{ env.RELEASE_NEEDED == 'true' }}
181
- uses: pypa/gh-action-pypi-publish@release/v1
182
- with:
183
- packages-dir: ./nextpipe/dist
184
-
185
- - name: notify slack
186
- if: ${{ env.RELEASE_NEEDED == 'true' && env.IS_PRE_RELEASE == 'false' }}
187
- run: |
188
- export DATA="{\"text\":\"Release notification - nextpipe ${{ inputs.VERSION }} (see <https://github.com/nextmv-io/nextpipe/releases/${{ inputs.VERSION }}|release notes> / <https://pypi.org/project/nextpipe|PyPI>)\"}"
189
- curl -X POST -H 'Content-type: application/json' --data "$DATA" ${{ secrets.SLACK_URL_MISSION_CONTROL }}
@@ -1 +0,0 @@
1
- __version__ = "v0.3.2.dev1"
File without changes
File without changes
File without changes
File without changes