PyPI Publishing Steps for adventurestay-utils
============================================

1. Refresh Dependencies
   - `python -m pip install --upgrade pip build twine`

2. Clean Workspace
   - Ensure your git status is clean and version numbers are updated in `pyproject.toml`.

3. Run Tests
   - `python -m pytest`
   - Only proceed if the test suite passes.

4. Build Distributions
   - `python -m build`
   - This generates `dist/*.whl` and `dist/*.tar.gz`.

5. Inspect Artifacts
   - `twine check dist/*`
   - Confirms metadata/rendering is valid.

6. Upload to TestPyPI (Optional Dry Run)
   - `python -m twine upload --repository testpypi dist/*`
   - Use an API token stored in `PYPI_TOKEN`/`TESTPYPI_TOKEN` env vars; never hardcode secrets.

7. Publish to PyPI
   - `python -m twine upload dist/*`
   - Requires a PyPI API token configured in `~/.pypirc` or via `TWINE_USERNAME=__token__` and `TWINE_PASSWORD`.

8. Verify Install
   - In a fresh virtualenv, run `pip install adventurestay-utils==<version>` to confirm the package is downloadable.

9. Tag the Release
   - `git tag v<version> && git push --tags`

10. Communicate Release
   - Share release notes/links with stakeholders and update project documentation if needed.
