-
Notifications
You must be signed in to change notification settings - Fork 2
Bump to v0.3.3 #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bump to v0.3.3 #18
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,149 @@ | ||
| name: PyPI Release | ||
|
|
||
| on: | ||
| release: | ||
| types: [published] | ||
| workflow_dispatch: # Allow manual triggering | ||
|
|
||
| permissions: | ||
| contents: read | ||
| actions: read | ||
| id-token: write | ||
|
|
||
| jobs: | ||
| build-wheels: | ||
| name: Build wheels on ${{ matrix.os }} | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| matrix: | ||
| os: [ubuntu-latest, macos-latest] | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| with: | ||
| submodules: recursive | ||
|
|
||
| - name: Set up Python | ||
| uses: actions/setup-python@v4 | ||
| with: | ||
| python-version: '3.11' | ||
|
|
||
| - name: Set up Docker Buildx (Linux only) | ||
| if: runner.os == 'Linux' | ||
| uses: docker/setup-buildx-action@v3 | ||
|
|
||
| - name: Install dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| python -m pip install cibuildwheel | ||
|
|
||
| - name: Sync Python version | ||
| run: python scripts/sync_python_version.py | ||
|
|
||
|
|
||
| - name: Verify Docker (Linux only) | ||
| if: runner.os == 'Linux' | ||
| run: | | ||
| docker --version | ||
| docker info | ||
| echo "Docker is ready for cibuildwheel" | ||
|
|
||
| - name: Build wheels | ||
| run: python -m cibuildwheel libCacheSim-python --output-dir wheelhouse | ||
|
|
||
| - name: Upload wheels as artifacts | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: wheels-${{ matrix.os }} | ||
| path: wheelhouse/*.whl | ||
|
|
||
| build-sdist: | ||
| name: Build source distribution | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| with: | ||
| submodules: recursive | ||
|
|
||
| - name: Set up Python | ||
| uses: actions/setup-python@v4 | ||
| with: | ||
| python-version: '3.11' | ||
|
|
||
| - name: Install build dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| python -m pip install build | ||
|
|
||
| - name: Sync Python version | ||
| run: python scripts/sync_version.py | ||
|
|
||
| - name: Build source distribution | ||
| run: python -m build --sdist . --outdir dist/ | ||
|
|
||
| - name: Upload sdist as artifact | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: sdist | ||
| path: dist/*.tar.gz | ||
|
|
||
| publish-to-pypi: | ||
| name: Publish to PyPI | ||
| needs: [build-wheels, build-sdist] | ||
| runs-on: ubuntu-latest | ||
| if: github.event_name == 'release' && github.event.action == 'published' | ||
| environment: | ||
| name: pypi | ||
| url: https://pypi.org/p/libcachesim | ||
| permissions: | ||
| id-token: write # IMPORTANT: this permission is mandatory for trusted publishing | ||
|
|
||
| steps: | ||
| - name: Download all artifacts | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| path: dist/ | ||
|
|
||
| - name: Flatten artifacts directory | ||
| run: | | ||
| mkdir -p final-dist | ||
| find dist/ -name "*.whl" -exec cp {} final-dist/ \; | ||
| find dist/ -name "*.tar.gz" -exec cp {} final-dist/ \; | ||
| ls -la final-dist/ | ||
|
|
||
| - name: Publish to PyPI | ||
| uses: pypa/gh-action-pypi-publish@release/v1 | ||
| with: | ||
| packages-dir: final-dist/ | ||
| skip-existing: true | ||
|
|
||
| publish-to-test-pypi: | ||
| name: Publish to TestPyPI | ||
| needs: [build-wheels, build-sdist] | ||
| runs-on: ubuntu-latest | ||
| if: github.event_name == 'workflow_dispatch' | ||
| environment: | ||
| name: testpypi | ||
| url: https://test.pypi.org/p/libcachesim | ||
| permissions: | ||
| id-token: write # IMPORTANT: this permission is mandatory for trusted publishing | ||
|
|
||
| steps: | ||
| - name: Download all artifacts | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| path: dist/ | ||
|
|
||
| - name: Flatten artifacts directory | ||
| run: | | ||
| mkdir -p final-dist | ||
| find dist/ -name "*.whl" -exec cp {} final-dist/ \; | ||
| find dist/ -name "*.tar.gz" -exec cp {} final-dist/ \; | ||
| ls -la final-dist/ | ||
|
|
||
| - name: Publish to TestPyPI | ||
| uses: pypa/gh-action-pypi-publish@release/v1 | ||
| with: | ||
| repository-url: https://test.pypi.org/legacy/ | ||
| packages-dir: final-dist/ | ||
| skip-existing: true |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -60,6 +60,10 @@ def update_pyproject_toml(version): | |||||
| if current_version == version: | ||||||
| print(f"Python binding version already up to date: {version}") | ||||||
| return False | ||||||
| # If the pyproject version is newer than version.txt, it is allowed. | ||||||
| if current_version > version: | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Direct string comparison of version numbers is unreliable. For example, You should use a proper version parsing library like
Suggested change
|
||||||
| print(f"Warning: pyproject version {current_version} is newer than version.txt {version}, skipping update") | ||||||
| return False | ||||||
| # replace the version line with the new version | ||||||
| pyproject_data = re.sub(r"version = \"(dev|[0-9]+\.[0-9]+\.[0-9]+)\"", f'version = "{version}"', pyproject_data) | ||||||
|
|
||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The previous implementation of
cache_free_hookwas buggy as it tried to access non-existent attributes. However, replacing it withpasscompletely removes the resource cleanup logic. This could lead to a memory leak ifPluginCacheinstances are created and destroyed repeatedly in a long-running process, as theStandaloneS3FIFOobject and its contents might not be garbage collected properly.It would be safer to provide a correct implementation that clears the data structures held by the
StandaloneS3FIFOinstance.