Utility for joining string lists with flexible separator formatting.
Project description
Formatted Join ✅
Effortlessly join string sequences with flexible separator formatting for clear, polished output
Installation
PyPI
pip install formatted-join
uv
uv add formatted-join
Usage Examples
formatted_join(items: Sequence[str], separator=', ', final_separator=' and ', use_penultimate_separator=True) -> str
Joins items with flexible separator configuraton.
>>> from formatted_join import formatted_join
>>> formatted_join(['Hello', 'World'])
'Hello and World'
>>> formatted_join(('A', 'B', 'C'))
'A, B, and C'
>>> formatted_join(['X', 'Y', 'Z', 'W'], separator=' | ', final_separator=' & ')
'X | Y | Z & W'
>>> formatted_join(['Solo'])
'Solo'
>>> formatted_join(['', ''])
' and '
>>> formatted_join(
... items=['Alpha', 'Bravo', 'Charlie', 'Delta'],
... separator=' | ',
... final_separator=' & ',
... use_penultimate_separator=False
... )
'Alpha | Bravo | Charlie & Delta'
>>> formatted_join(['One', 'Two'], final_separator=' ~ ')
'One ~ Two'
formatted_join_conjunction(items: Sequence[str], language: str = 'en') -> str
Joins items using a comma and localized* “and” before the last item.
>>> from formatted_join import formatted_join_conjunction
>>> formatted_join_conjunction(['Spring', 'Summer'])
'Spring and Summer'
>>> formatted_join_conjunction(['One', 'Two', 'Three'])
'One, Two, and Three'
>>> formatted_join_conjunction(['Motorcycle', 'Bus', 'Car'], language='en')
'Motorcycle, Bus, and Car'
>>> formatted_join_conjunction(['Motorcycle', 'Bus', 'Car'], language='de')
'Motorcycle, Bus und Car'
formatted_join_disjunction(items: Sequence[str], language: str = 'en') -> str
Joins items using a comma and localized* “or” before the last item.
>>> from formatted_join import formatted_join_disjunction
>>> formatted_join_disjunction(['Monday', 'Tuesday'])
'Monday or Tuesday'
>>> formatted_join_disjunction(['X', 'Y', 'Z'])
'X, Y, or Z'
>>> formatted_join_disjunction(['Motorcycle', 'Bus', 'Car'], language='en')
'Motorcycle, Bus, or Car'
>>> formatted_join_disjunction(['Motorcycle', 'Bus', 'Car'], language='de')
'Motorcycle, Bus oder Car'
formatted_join_unit(items: Sequence[str]) -> str
Joins items with commas only (no distinct final separator).
>>> from formatted_join import formatted_join_unit
>>> formatted_join_unit(['A'])
'A'
>>> formatted_join_unit(['A', 'B', 'C', 'D'])
'A, B, C, D'
formatted_join_narrow(items: Sequence[str]) -> str
Joins items with a single space separating each.
>>> from formatted_join import formatted_join_narrow
>>> formatted_join_narrow(['Only'])
'Only'
>>> formatted_join_narrow(['A', 'B', 'C'])
'A B C'
>>> formatted_join_narrow(['Line1', '-', 'Line2'])
'Line1 - Line2'
* Supported languages for formatted_join_[conjunction|disjunction]:
| language | and | or | separator | has penultimate separator |
|---|---|---|---|---|
| en | and | or | ', ' |
yes |
| de | und | oder | ', ' |
no |
Development
- Install Dependencies:
uv sync && uv pip install -r pyproject.toml --extra dev
- Run formater:
uv run ruff check --select I --fix && uv run ruff format
- Run type checking:
uv run mypy .
- Run unit tests:
uv run formatted_join_test.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file formatted_join-1.1.2.tar.gz.
File metadata
- Download URL: formatted_join-1.1.2.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d191d4635976f474e94a8cb041c7d78f79edc5ad7146b56112795aee036c4c1e
|
|
| MD5 |
7b7bce7038bfab803dec349bd55cfbe5
|
|
| BLAKE2b-256 |
e864c55d2c2c0a606370fcd6e6059fa9645f3dee2fbefe149be4bfda72babee1
|
File details
Details for the file formatted_join-1.1.2-py3-none-any.whl.
File metadata
- Download URL: formatted_join-1.1.2-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ef38c3d71ca364be5db9024c9576f69fe69cb01975b21608e8f3f5b8b618a7b
|
|
| MD5 |
891b914a58136e86c7a7ff27799400ad
|
|
| BLAKE2b-256 |
066e652475af754d4f93418df310ad19212097e614d61ba0bdc054817a3ee21d
|