Skip to main content

URL slug generation with transliteration and uniqueness.

Project description

philiprehberger-slug

Tests PyPI version GitHub release Last updated License Bug Reports Feature Requests Sponsor

URL slug generation with transliteration and uniqueness.

Installation

pip install philiprehberger-slug

Usage

from philiprehberger_slug import slugify

slugify("Hello World!")        # "hello-world"
slugify("Ünïcödé Têxt")       # "unicode-text"
slugify("Straße nach München") # "strasse-nach-munchen"

Options

from philiprehberger_slug import slugify

slugify("Hello World", separator="_")    # "hello_world"
slugify("Hello World", max_length=8)     # "hello"
slugify("Hello World", lowercase=False)  # "Hello-World"

Reserved Slug Blocking

from philiprehberger_slug import slugify, ReservedSlugError

try:
    slugify("Admin", reserved=["admin", "api", "about"])
except ReservedSlugError as e:
    print(e)  # "Slug 'admin' is reserved. Reserved slugs: ['admin', 'api', 'about']"

Custom Transliteration

from philiprehberger_slug import slugify

slugify("Ölkörper", transliterate={"ö": "oe", "ü": "ue"})  # "oelkoerper"

Slug from Parts

from philiprehberger_slug import slug_from_parts

slug_from_parts("2026", "03", "my post title")  # "2026-03-my-post-title"
slug_from_parts("Blog", "Straße & Weg")         # "blog-strasse-and-weg"

Unique Slugs

from philiprehberger_slug import unique_slugify

existing = {"hello-world", "hello-world-2"}
unique_slugify("Hello World", existing)  # "hello-world-3"

Strip HTML

from philiprehberger_slug import strip_html

strip_html("<p>Hello <b>World</b></p>")  # "Hello World"

API

Function / Class Description
slugify(text, separator, max_length, lowercase, reserved, transliterate) Generate a URL-safe slug from text
slug_from_parts(*parts, separator) Join multiple strings into a single slug
unique_slugify(text, existing, separator, max_length) Generate a unique slug with numeric suffix
strip_html(text) Remove HTML tags from text
ReservedSlugError Raised when a slug matches a reserved word

Development

pip install -e .
python -m pytest tests/ -v

Support

If you find this package useful, consider giving it a star on GitHub — it helps motivate continued maintenance and development.

LinkedIn More packages

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

philiprehberger_slug-0.2.0.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

philiprehberger_slug-0.2.0-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_slug-0.2.0.tar.gz.

File metadata

  • Download URL: philiprehberger_slug-0.2.0.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for philiprehberger_slug-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3322826aca5bb9b91c8a637298e888b9f7245afd6f25fdbf2d41e23635a240d0
MD5 3ceb5dcd0b3d7b8520b66275c6366b94
BLAKE2b-256 41c5bee6f1c0b88142ec250479977784264c7f6f68d9af8b511381cade9dd73d

See more details on using hashes here.

File details

Details for the file philiprehberger_slug-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_slug-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b20e7bcc60305e736a86df0c60c28fb66a4e8ad0c49ce4cc8a89b1d61817b241
MD5 d13fcea8f00f8329ad555dd6e5fbac4a
BLAKE2b-256 e20ba8465df1d49078647233b8cf1a09b487cfff8f4e8dc568f8f3d71c953a03

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page