Skip to content

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.parent candidate when adding .parent.parent.parent for dev environment)

1.5.2

Fixed

  • Fixed CLI metadata resolution after refactoring (get_resource_path path traversal updated for new cli/ 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, removed output/ directory
  • Moved get_upload_time from output/utils.py to core/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] cli extra in pyproject.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 .git suffix only when URL ends with .git
  • Renamed loop variable os to os_stat in models to avoid shadowing the os module

1.4.0

Added

  • Public Python API (get_package_stats function) 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.py module 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_name utility 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+