# What changed in pypiserver

> 7 changes in pypiserver 2 from its official release notes, upgrade guides and advisories: 1 breaking, 1 security. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/pypi/pypiserver/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## pypiserver 2

### Breaking changes

- Support for Python 3.8 and 3.9 was removed, affecting which Python versions developers can use. (2.4.1) — [release notes](https://github.com/pypiserver/pypiserver/releases/tag/v2.4.1)

### Security

- Hardens the XML parser against entity-expansion DoS attacks. (2.4.2) — [release notes](https://github.com/pypiserver/pypiserver/releases/tag/v2.4.2)

### Fixes and other changes

- Preserves proxy prefixes when generating normalization redirects. (2.4.2) — [release notes](https://github.com/pypiserver/pypiserver/releases/tag/v2.4.2)
- Fixes download URLs so they retain the base URL prefix. (2.4.2) — [release notes](https://github.com/pypiserver/pypiserver/releases/tag/v2.4.2)
- The cgi import error on Python 3.13 and later was fixed. (2.4.1) — [release notes](https://github.com/pypiserver/pypiserver/releases/tag/v2.4.1)
- A missing whitespace in help output was fixed, changing the formatting developers see when requesting help. (2.4.1) — [release notes](https://github.com/pypiserver/pypiserver/releases/tag/v2.4.1)
- Compatibility with twine 1.7.0 was fixed, allowing developers using that version to work with pypiserver. (2.4.1) — [release notes](https://github.com/pypiserver/pypiserver/releases/tag/v2.4.1)
