Skip to main content
`eol` is both a command-line script `eol` and a Python module `eol` for working
with end-of-line chars in text files.

This project lives here: <http://github.com/trentm/eol>

## Installation

To install in your Python's global site-packages use one of the
following:

pip install eol
pypm install eol # if you use ActivePython (http://www.activestate.com/activepython)

But you use a
[virtualenv](http://www.arthurkoziel.com/2008/10/22/working-virtualenv/),
right? If so, then use one of the following:

pip -E path/to/env install eol
pypm -E path/to/env install eol


## Command-line examples

**List the EOL-style** of given paths:

$ eol *.txt
foo_cr.txt: Mac Classic (CR)
foo_crlf.txt: Windows (CRLF)
foo_empty.txt: No EOLs
foo_lf.txt: Unix (LF)
foo_mixed.txt: Mixed, predominantly Unix (LF)

Recursively:

$ eol -r ~/src/redis
/Users/trentm/src/redis/.gitignore: Unix (LF)
/Users/trentm/src/redis/BETATESTING.txt: Unix (LF)
/Users/trentm/src/redis/BUGS: Unix (LF)
/Users/trentm/src/redis/COPYING: Unix (LF)
...
/Users/trentm/src/redis/zmalloc.h: Unix (LF)
/Users/trentm/src/redis/.git/HEAD: Unix (LF)
/Users/trentm/src/redis/.git/config: Unix (LF)
...
/Users/trentm/src/redis/client-libraries/README: Unix (LF)
/Users/trentm/src/redis/design-documents/REDIS-CLUSTER: Unix (LF)
/Users/trentm/src/redis/doc/AppendOnlyFileHowto.html: Unix (LF)
/Users/trentm/src/redis/doc/AuthCommand.html: Unix (LF)
...

**Find files** with the given EOL-style:

$ eol -f dos -x .svn -r ~/src/python
/Users/trentm/src/python/Doc/make.bat
/Users/trentm/src/python/Lib/email/test/data/msg_26.txt
/Users/trentm/src/python/Lib/encodings/cp720.py
/Users/trentm/src/python/Lib/test/decimaltestdata/and.decTest
...
/Users/trentm/src/python/PC/VS8.0/x64.vsprops
/Users/trentm/src/python/PCbuild/pcbuild.sln
...

**Convert files** to a given EOL-style:

$ eol ~/src/python/Tools/msi/merge.py
/Users/trentm/src/python/Tools/msi/merge.py: Windows (CRLF)
$ eol -c cr ~/src/python/Tools/msi/merge.py

# But who really wants CR (aka Mac Classic, '\r') EOLs.
# "native" is an alias for the EOL-style native to the current platform
$ eol -c native ~/src/python/Tools/msi/merge.py
converted `/Users/trentm/src/python/Tools/msi/merge.py' to LF EOLs
$ eol ~/src/python/Tools/msi/merge.py
/Users/trentm/src/python/Tools/msi/merge.py: Unix (LF)


## Module examples

**List the EOL-style** of given paths:

>>> import eol, glob
>>> for path in glob.glob("*.txt")
>>> for path in glob.glob("*.txt"):
... print path, eol.eol_info_from_path(path)
...
foo_cr.txt ('\r', '\r') # (<detected-eols>, <suggested-eols>)
foo_crlf.txt ('\r\n', '\r\n')
foo_empty.txt (None, '\n') # suggests the native EOL for empty content
foo_lf.txt ('\n', '\n')
foo_mixed.txt (<class 'eol.MIXED'>, '\n')

Recursively:

>>> for i in eol.eol_info_from_path_patterns(["/Users/trentm/src/redis"], recursive=True): print i
...
('/Users/trentm/src/redis/.gitignore', '\n', '\n')
('/Users/trentm/src/redis/BETATESTING.txt', '\n', '\n')
('/Users/trentm/src/redis/BUGS', '\n', '\n')
('/Users/trentm/src/redis/COPYING', '\n', '\n')
...

**Convert files** to a given EOL-style:

>>> path = "/Users/trentm/src/python/Tools/msi/merge.py"
>>> eol.eol_info_from_path(path)
('\r\n', '\r\n')
>>> eol.convert_path_eol(path, "\n")
>>> eol.eol_info_from_path(path)
('\n', '\n')

Metadata

Release files for eol 0.7.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eol 0.7.5
File Size Uploaded Provenance Actions
eol-0.7.5.zip 25.3 kB Without provenance Details for eol-0.7.5.zip

Release files / eol-0.7.5.zip

Download URL eol-0.7.5.zip
Size 25.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1a30348a5cddbf0fc16309c9f284b761a624eda33357b42c81256325185ce3bd
BLAKE2b-256 checksum
How to use checksums
25f5b0019907b9f0e7885191de507a18cbe018c58006a2f4576ca11604b14338
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for eol 0.7.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page