Skip to main content

Python Validator Proxy - waliduje pliki Python przed uruchomieniem

Project description

🔍 Spylog - Python Validator Proxy

Spylog to zaawansowane narzędzie walidujące pliki Python przed ich uruchomieniem. Działa jako proxy dla interpretera Pythona, sprawdzając składnię, bezpieczeństwo i jakość kodu.

🚀 Instalacja

Wymagania

  • Python 3.8+
  • Poetry (zalecane) lub pip

Instalacja z Poetry (zalecane)

# Klonuj repozytorium
git clone https://github.com/your-username/spylog.git
cd spylog

# Zainstaluj zależności i paczkę
poetry install

# Aktywuj środowisko
poetry shell

Instalacja z pip

# Z PyPI (gdy opublikowane)
pip install spylog

# Z kodu źródłowego
git clone https://github.com/your-username/spylog.git
cd spylog
pip install .

Automatyczna instalacja z aliasem

# Użyj skryptu instalacyjnego
chmod +x install.sh
./install.sh

⚙️ Konfiguracja aliasu

Aby Spylog działał jako zamiennik dla komendy python, skonfiguruj alias:

Bash/Zsh

# Dodaj do ~/.bashrc lub ~/.zshrc
export SPYLOG_ORIGINAL_PYTHON=$(which python)
alias python='spylog'

Fish

# Dodaj do ~/.config/fish/config.fish
set -gx SPYLOG_ORIGINAL_PYTHON (which python)
alias python='spylog'

📖 Użytkowanie

Po skonfigurowaniu aliasu, Spylog automatycznie waliduje pliki Python:

# Waliduje script.py przed uruchomieniem
python script.py

# Waliduje z argumentami
python my_script.py --arg1 value --verbose

# Tryb interaktywny (bez walidacji)
python

# Flagi Pythona (bez walidacji)
python -c "print('Hello')"
python -m module
python --help

✅ Co sprawdza Spylog?

🔍 Sprawdzenia podstawowe

  • Składnia Python - używa AST do wykrywania błędów składni
  • Kodowanie plików - obsługuje UTF-8 i fallback do Latin-1
  • Możliwość odczytu - sprawdza uprawnienia i dostępność pliku

🛡️ Sprawdzenia bezpieczeństwa

  • eval() i exec() - potencjalnie niebezpieczne funkcje
  • os.system() - bezpośrednie wywołania systemowe
  • subprocess - wywołania zewnętrznych procesów
  • Dynamiczne importy __import__()

📊 Sprawdzenia jakości kodu

  • Długość linii - domyślnie max 120 znaków
  • Mieszanie wcięć - wykrywa tabulatory vs spacje
  • Rozszerzalne - łatwo dodać własne reguły

🖥️ Przykład działania

$ python bad_script.py
🔍 Spylog Python Validator
📁 Walidacja: bad_script.py

⚠️  OSTRZEŻENIA BEZPIECZEŃSTWA:
    Znaleziono os.system() w linii 5
    Znaleziono wywołanie 'eval' w linii 8

📋 OSTRZEŻENIA JAKOŚCI KODU:
    Linia 12 przekracza maksymalną długość (145 > 120 znaków)

Czy kontynuować mimo ostrzeżeń? (t/n): n
❌ Wykonanie przerwane przez użytkownika z powodu ostrzeżeń

$ python good_script.py
🔍 Spylog Python Validator
📁 Walidacja: good_script.py
✅ Plik jest poprawny
🚀 Uruchamiam: python good_script.py
--------------------------------------------------
Hello, World!

🔧 Rozwój z Poetry

Podstawowe komendy Poetry

# Instalacja w trybie deweloperskim
poetry install

# Dodanie nowej zależności
poetry add requests

# Dodanie zależności deweloperskiej
poetry add --group dev pytest

# Aktywacja środowiska
poetry shell

# Uruchomienie skryptu
poetry run python script.py

# Budowanie paczki
poetry build

# Publikacja na PyPI
poetry publish

Uruchamianie testów

# Z Poetry
poetry run pytest

# Z aktywowanym środowiskiem
pytest

# Z pokryciem kodu
poetry run pytest --cov=spylog

Formatowanie i linting

# Black - formatowanie
poetry run black spylog tests

# Flake8 - linting
poetry run flake8 spylog tests

# MyPy - sprawdzanie typów
poetry run mypy spylog

🛠️ Makefile (opcjonalny)

# Wszystkie sprawdzenia
make check

# Tylko testy
make test

# Formatowanie
make format

# Instalacja
make install

⚙️ Konfiguracja

Spylog tworzy plik konfiguracyjny w ~/.spylog/config.json:

{
  "original_python": "/usr/bin/python3",
  "dangerous_functions": ["eval", "exec", "__import__"],
  "dangerous_modules": [
    ["os", "system"],
    ["subprocess", "call"]
  ],
  "security_enabled": true,
  "interactive_warnings": true,
  "max_line_length": 120,
  "encoding": "utf-8"
}

Dostosowywanie przez API

from spylog import SpylogConfig

config = SpylogConfig()
config.security_enabled = False
config.max_line_length = 100
config.save_config()

🔌 Rozszerzanie

Dodaj własne sprawdzenia w spylog/validator.py:

def check_custom_rules(content: str) -> List[str]:
    """Własne reguły walidacji"""
    warnings = []
    
    if "TODO" in content:
        warnings.append("Znaleziono TODO w kodzie")
    
    if "print(" in content:
        warnings.append("Używanie print() w kodzie produkcyjnym")
    
    return warnings

📁 Struktura projektu

spylog/
├── spylog/              # Główny pakiet
│   ├── __init__.py      # Metadane i eksporty
│   ├── main.py          # Logika proxy
│   ├── validator.py     # Walidacja i sprawdzenia
│   └── config.py        # Zarządzanie konfiguracją
├── tests/               # Testy jednostkowe
├── pyproject.toml       # Konfiguracja Poetry
├── README.md            # Dokumentacja
└── install.sh           # Skrypt instalacyjny

🤝 Współpraca

  1. Fork repozytorium
  2. Utwórz branch: git checkout -b feature/nowa-funkcjonalność
  3. Commituj: git commit -am 'Dodaj nową funkcjonalność'
  4. Push: git push origin feature/nowa-funkcjonalność
  5. Pull Request

🐛 Zgłaszanie błędów

  • Użyj GitHub Issues
  • Podaj wersję Python i Spylog (spylog --version)
  • Dołącz przykład problematycznego kodu
  • Opisz oczekiwane vs rzeczywiste zachowanie

📝 Licencja

MIT License - projekt open source, darmowy do użytku komercyjnego i prywatnego.

🎯 Roadmapa

v0.2.0

  • Plugin system
  • GUI konfiguracji
  • Integracja z pre-commit
  • Cache wyników walidacji

v0.3.0

  • VS Code extension
  • Integracja z CI/CD
  • Raportowanie metryk
  • Wsparcie dla więcej języków

🐍 Bezpieczniejszy Python z Spylog! ✨

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

spylog-0.1.0.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

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

spylog-0.1.0-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file spylog-0.1.0.tar.gz.

File metadata

  • Download URL: spylog-0.1.0.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.3 Linux/6.14.9-300.fc42.x86_64

File hashes

Hashes for spylog-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f8f61407906e81aa76ad4561f4133f442efdaf1c3b75584043399f7c069e8998
MD5 d5a0d333aedad1b4aecc76b3287961ff
BLAKE2b-256 cd5141300006bd3f727e2d687731ae2964c82c1e8696bf926eddac5a81f4e7a3

See more details on using hashes here.

File details

Details for the file spylog-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: spylog-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.13.3 Linux/6.14.9-300.fc42.x86_64

File hashes

Hashes for spylog-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a1c6301e06742e27e8f3aa2449e93ba0886ed225d8f0877330acf8c5b06679d4
MD5 6cbb6e4205d4c8f73a788c6f406b6e27
BLAKE2b-256 a916772a6eb0e1d3e444fefc62a6050d6cdd1ef266050da2e6443c5f1b525006

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