Skip to content
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

Update test.pypi.org upload workflow #25

Merged
merged 6 commits into from
Oct 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 45 additions & 20 deletions .github/workflows/package-testpypi.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
---
# Upload to Test PyPI on every push to main
name: Publish package to test.pypi.org
on:
push:
branches: [main]
permissions:
contents: write
id-token: write
concurrency:
group: test-pypi-upload
group: pypi
jobs:
# Upload to Test PyPI on every push to main
test-pypi:
name: Publish package to test.pypi.org
test-pypi-build:
name: Build package with unique version for test.pypi.org
if: github.repository == 'tektronix/tm_devices'
runs-on: ubuntu-latest
environment: package-testpypi
steps:
- uses: actions/checkout@v3
with:
Expand All @@ -26,27 +22,56 @@ jobs:
python-version: 3.11
check-latest: true
- name: Install workflow dependencies
run: pip install poetry tomli tomli_w requests
run: pip install poetry-core tomli tomli_w requests
- name: Create unique package version
id: create-version
run: |
CURRENT_VERSION=$(python scripts/pypi_latest_version.py --package=tm_devices --index=test.pypi)
echo CURRENT_VERSION: $CURRENT_VERSION
NEW_VERSION=$(python scripts/create_post_version_for_testpypi.py --version=$CURRENT_VERSION)
echo NEW_VERSION: $NEW_VERSION
python scripts/project_version.py --set-version=$NEW_VERSION
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
- uses: hynek/[email protected]
id: build-pkg
- name: Copy package to dist/ folder
run: |
mkdir -p dist/
cp ${{ steps.build-pkg.outputs.dist }}/*.whl ${{ steps.build-pkg.outputs.dist }}/*.tar.gz dist/
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT
- name: Build package
uses: hynek/[email protected]
outputs:
built-version: ${{ steps.create-version.outputs.NEW_VERSION }}
test-pypi-upload:
name: Upload package to test.pypi.org
needs: test-pypi-build
if: github.repository == 'tektronix/tm_devices'
runs-on: ubuntu-latest
environment: package-testpypi
permissions:
id-token: write
steps:
- name: Download built packages
uses: actions/download-artifact@v3
with:
name: Packages
path: dist
- name: Upload package to Test PyPI
uses: pypa/[email protected]
with:
repository-url: https://test.pypi.org/legacy/
- name: Wait for package to be available
run: sleep 30
test-pypi-install:
name: Install package from test.pypi.org
needs: [test-pypi-build, test-pypi-upload]
if: github.repository == 'tektronix/tm_devices'
runs-on: ubuntu-latest
steps:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: x
check-latest: true
- name: Test installing from test.pypi.org
run: pip install --index-url=https://test.pypi.org/simple/ --extra-index-url=https://pypi.org/simple
tm_devices==${{ env.NEW_VERSION }}
# A retry is used to allow for some downtime before the package is installable
uses: nick-fields/retry@v2
with:
timeout_minutes: 2
max_attempts: 5
retry_wait_seconds: 30
warning_on_retry: false
command: pip install --index-url=https://test.pypi.org/simple/ --extra-index-url=https://pypi.org/simple
tm_devices==${{ needs.test-pypi-build.outputs.built-version }}
2 changes: 1 addition & 1 deletion src/tm_devices/drivers/pi/scopes/tekscope/tekscope.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def channel(self) -> "MappingProxyType[str, TekScopeChannel]":

# Set scope PI verbosity back to previous value
self.set_and_check(":VERBose", old_pi_verbosity)
return MappingProxyType(channel_map)
return MappingProxyType(channel_map) # pyright: ignore[reportUnknownVariableType]

@property
def commands(
Expand Down
2 changes: 1 addition & 1 deletion tests/test_device_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class TestDeviceManager: # pylint: disable=no-self-use
# Get the list of device types, ignore the unit test ones since
# this test only applies to actual supported devices.
"device_type",
list(filter(lambda x: "UNIT_TEST" not in x, (y.name for y in DeviceTypes))), # type: ignore
list(filter(lambda x: "UNIT_TEST" not in x, (y.name for y in DeviceTypes))),
nfelt14 marked this conversation as resolved.
Dismissed
Show resolved Hide resolved
)
def test_supported_device_type_methods(self, device_type: str) -> None:
"""Test that all supported device types have a getter method in the DeviceManager.
Expand Down
Loading