Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Extliner is a lightweight Python package that counts lines in files grouped by file extension — perfect for analyzing codebases or text-heavy directories.

License

Notifications You must be signed in to change notification settings

codeperfectplus/extliner

Repository files navigation

📦 extliner

extliner is a lightweight Python package that recursively counts lines in files — distinguishing between total lines and non-empty lines — grouped by file extension. It's perfect for analyzing codebases, writing statistics, or cleaning up documentation-heavy directories.


🚀 Features

  • 📂 Recursive directory scanning
  • 🧮 Counts:
    • Total lines (with whitespace)
    • Non-empty lines (ignores blank lines)
  • 🔠 Groups results by file extension (.py, .js, NO_EXT, etc.)
  • 🚫 Support for ignoring specific extensions or folders
  • 📊 Output formats:
    • Pretty CLI table
    • JSON / CSV / Markdown exports
  • 🧩 Clean, extensible class-based design
  • 🧪 Fully tested with unittest
  • 🔧 CLI and Python API support

📥 Installation

Install via pip:

pip install extliner

Or install locally for development:

git clone https://github.com/extliner/extliner.git
cd extliner
pip install -e .

⚙️ CLI Usage

✅ Basic

extliner -d <directory_path>

🔍 Ignoring Extensions

extliner -d ./myproject --ignore .md .log

Ignoring Folders

extliner -d ./myproject --folders .venv __pycache__

🧾 Output Example

+-------------+---------------+------------------+---------+--------------+
| Extension | With Spaces | Without Spaces | Files | % of Total |
+=============+===============+==================+=========+==============+
| .py | 443 | 362 | 7 | 32.15% |
+-------------+---------------+------------------+---------+--------------+
| no_ext | 361 | 287 | 8 | 26.20% |
+-------------+---------------+------------------+---------+--------------+
| .pyc | 151 | 125 | 3 | 10.96% |
+-------------+---------------+------------------+---------+--------------+

🧱 Python API

✅ Count Lines Programmatically

from extliner.main import LineCounter
from pathlib import Path
counter = LineCounter(ignore_extensions=[".log", ".json"])
result = counter.count_lines(Path("./your_directory"))
# Output as JSON
print(counter.to_json(result))
# Output as Markdown
print(counter.to_markdown(result))
# Output as CSV
print(counter.to_csv(result))

🛠️ Configuration Options

Flag Description Example Optioal/Required
-d Directory to scan -d ./src Required
--ignore File extensions to ignore --ignore .log .md .json Optional
--folders Folder names to ignore --folders .venv __pycache__ Optional

📂 Supported Formats

Output Method Description
to_json(data) Returns JSON string
to_csv(data) Returns CSV string
to_markdown(data) Returns Markdown table

✅ Testing

To run tests:

python -m unittest discover tests

Or using pytest (if installed):

pytest

📄 License

This project is licensed under the MIT License.


👨‍💻 Author

Made with ❤️ by Deepak Raj

About

Extliner is a lightweight Python package that counts lines in files grouped by file extension — perfect for analyzing codebases or text-heavy directories.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

AltStyle によって変換されたページ (->オリジナル) /