Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.5.3¶
Fixed¶
- Restored installed-package metadata lookup path in
get_resource_path(v1.5.2 inadvertently removed the.parent.parentcandidate when adding.parent.parent.parentfor dev environment)
1.5.2¶
Fixed¶
- Fixed CLI metadata resolution after refactoring (
get_resource_pathpath traversal updated for newcli/subdirectory)
1.5.1¶
Changed¶
- CLI dependencies (
typer,rich) moved to optional extras (pip install pypi-package-stats[cli]) - Library installable without CLI dependencies (
pip install pypi-package-stats) - Reorganized package structure: consolidated CLI code into
cli/package, removedoutput/directory - Moved
get_upload_timefromoutput/utils.pytocore/processing.py - README reorganized to be library-focused with API reference tables
- Graceful error message when CLI invoked without
[cli]extras installed
Added¶
- Dedicated CLI Guide (
CLI.md) with full command reference and troubleshooting - API Reference documentation page with mkdocstrings integration
[project.optional-dependencies] cliextra inpyproject.toml
1.5.0¶
Added¶
- Request throttling for rate-limited hosts (e.g. pypistats.org) to avoid 429s
Changed¶
- CI workflow now tests on Python 3.8 through 3.14
- Safe date parsing for Python version breakdown (handles invalid date strings)
- More robust repository URL handling: strip
.gitsuffix only when URL ends with.git - Renamed loop variable
ostoos_statin models to avoid shadowing theosmodule
1.4.0¶
Added¶
- Public Python API (
get_package_statsfunction) for programmatic access to PyPI package statistics - Automatic retry mechanism with exponential backoff for handling transient network errors and rate limits
- Custom exception hierarchy (
PyPIStatsError,PackageNotFoundError,APIError) for better error handling - Comprehensive test suite with unit tests for core functionality (client, cache, processing, utilities)
- GitHub Actions CI/CD workflow for automated testing across Python 3.8-3.12
- Test fixtures and sample data for reliable testing
Changed¶
- Major codebase refactoring with improved architecture and separation of concerns
- Reorganized code structure: moved core functionality to
core/directory (client, cache, exceptions, models, processing, constants) - Introduced
api.pymodule providing clean public API interface - Enhanced README documentation with clearer structure and examples
1.3.2¶
Added¶
- Google Search Console verification meta tag for improved SEO tracking
- Comprehensive keywords list in mkdocs.yml for better search engine discoverability
- Open Graph image metadata for enhanced social media sharing
- Structured metadata (description, keywords, author info) to documentation pages (CHANGELOG.md, CONTRIBUTING.md, LICENSE.md, index.md)
extract_repo_nameutility function supporting GitHub, GitLab, and Bitbucket URL parsing
Changed¶
- Redesigned CLI welcome banner with compact 2-line Unicode block style (replacing large ASCII art)
- Banner title now dynamically displays repository name (e.g., "owner/repo") instead of static "Welcome" text
- Streamlined README.md by removing verbose sections and reorganizing content into concise tables
- Updated example output image with new banner design
1.3.1¶
Fixed¶
- Fixed pyproject.toml Missing error by forcing inclusion in wheel build
- Fixed get_resource_path function to fetch pyproject.toml from the correct path
1.3.0¶
Fixed¶
- Fixed pyproject.toml parsing error by improving path resolution for PyInstaller and different execution environments
Added¶
- PyPI downloads badge to README
- MkDocs theme overrides for improved documentation styling
Changed¶
- Improved README flow and formatting
- Enhanced rate limiting documentation with clearer explanations
1.2.0¶
Added¶
- MkDocs documentation site with GitHub Pages deployment
- GitHub Actions workflow for automated documentation deployment
- Refactored CONTRIBUTING.md with comprehensive contribution guidelines
- Documentation site accessible at https://ysskrishna.github.io/pypi-package-stats/
Changed¶
- Updated nestedutils dependency to v1.1.2
- Improved package keywords for better discoverability on PyPI
- Updated documentation URL in pyproject.toml to point to GitHub Pages
- Enhanced README with documentation badge and improved structure
1.1.0¶
Added¶
- Development documentation (DEVELOPMENT.md) with contribution guidelines
- Release documentation (RELEASE.md) with release process instructions
- Human-readable date formatting for package upload times (e.g., "December 7, 2025")
- OS name normalization (darwin → macOS, windows → Windows, linux → Linux)
- CLI welcome banner with ASCII art about the project
- Example output image in media directory
Changed¶
- Improved CLI help text formatting and clarity
- Enhanced README documentation with better structure and examples
- Refined default value handling for better user experience
- Improved CLI output formatting and consistency
1.0.0¶
Added¶
- Initial release of PyPI Package Stats
- CLI tool to fetch comprehensive PyPI package information
- Package metadata display:
- Name, version, upload time
- Description, author, license
- Home page and PyPI URL
- Download statistics:
- Last day, week, month, and 180-day download counts
- Excludes mirror downloads
- Python version breakdown:
- Top 5 Python versions (last 30 days)
- Download percentages and counts
- Operating system distribution:
- Top 4 operating systems (last 30 days)
- Download percentages and counts
- JSON output format option
- Persistent disk caching with configurable TTL (default: 3600 seconds)
- Cache management commands:
- Clear cache
- View cache information
- Rich terminal output with formatted tables
- Support for Python 3.8+