Skip to main content

Simple sort utility implemented in Python with Click

Project description

nastya-sort

Lightweight implementation of Unix sort utility in Python with Click framework.

Features

  • ✅ Sort lines from files or stdin
  • ✅ Numeric sorting with -n flag
  • ✅ Reverse order with -r flag
  • ✅ Docker support
  • ✅ Compatible with Unix sort behavior

Installation

From source

git clone https://github.com/Nastia2004/nastya-sort-lnu.git
cd nastya-sort-lnu
pip install -e .

Using Docker

# Or build locally
docker build -t nastya-sort .

Usage

Command Line Interface

# Sort lines from stdin
echo -e "banana\napple\ncherry" | sort

# Sort file contents
sort file.txt

# Numeric sort
echo -e "10\n2\n100\n20" | sort -n
# Output: 2, 10, 20, 100

# Reverse order
sort -r file.txt

# Combine options
sort -rn numbers.txt

Command Options

Option Description
-n, --numeric Compare according to string numerical value
-r, --reverse Reverse the result of comparisons
-h, --help Show help message and exit

Examples

Basic Sorting

# Alphabetical sort
cat names.txt | sort

# Sort and save to file
sort input.txt > sorted.txt

Numeric Sorting

# Sort numbers correctly
echo -e "100\n20\n3\n1000" | sort -n
# Output:
# 3
# 20
# 100
# 1000

Reverse Sorting

# Descending order
echo -e "a\nc\nb" | sort -r
# Output:
# c
# b
# a

Combined with Other Tools

# Sort and remove duplicates
sort file.txt | uniq

# Sort CSV by second column
cut -d',' -f2 data.csv | sort -n

# Count and sort word frequency
cat text.txt | tr ' ' '\n' | sort | uniq -c | sort -rn

Development

Setup Environment

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e .

Building Docker Image

docker build -t nastya-sort .
docker run nastya-sort --help

Testing

# Test basic sorting
echo -e "c\na\nb" | sort

# Test numeric sorting
echo -e "10\n2\n1" | sort -n

# Test with Docker
echo -e "3\n1\n2" | docker run -i nastya-sort -n

CI/CD

This project uses GitHub Actions to automatically:

  • Build Docker images on every push to main
  • Run basic tests
  • Push images to GitHub Container Registry
  • Tag images with commit SHA and latest

Project Structure

nastya-sort/
├── nastya_sort/
│   ├── __init__.py       # Package version
│   └── cli.py            # CLI implementation
├── .github/
│   └── workflows/
│       └── docker-publish.yml  # CI/CD pipeline
├── Dockerfile            # Docker image definition
├── setup.py              # Package configuration
├── README.md             # This file
└── .gitignore           # Git ignore rules

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

nastya_sort_lnu-0.2.0.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

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

nastya_sort_lnu-0.2.0-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for nastya_sort_lnu-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7f190aab37e18cc8c1fbbd7b13a33bfdd989322df3f551572e4ea424f56fcedb
MD5 91b9478d300920a332288e9b56803e79
BLAKE2b-256 8ae83f2bc04e8f10b2840400560ee65dac36dc798ed5fb69b2bde3e6699c8bb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nastya_sort_lnu-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 894c90abae7bd64b02cf314bdfef0dd71ab994966d5e4e45c0abd88ebc8f7bb7
MD5 737c65a5a2aeea18c3ca3fe489ea684d
BLAKE2b-256 d72f0e5a3c7aef1081a69ae86b9448dc7c5865c16234b1caf46566a4625bd21f

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