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.3.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.3-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spylog-0.1.3.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for spylog-0.1.3.tar.gz
Algorithm Hash digest
SHA256 dba4b854ceaf7c3656906dd57323892af75be35dddaa3b7673cdc28ebb3a6b48
MD5 58869336dc2a22a87364b0d0849ef549
BLAKE2b-256 87e3d8d46d59a88a7bc3012a8edb041721bcbdd441b201759e858fce49c5825d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: spylog-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for spylog-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cfeb4a0987943b6515639ceb5d57b9818d02baf87dd9d6f9a7a9e3b97418801e
MD5 180438158145189bd9a2f65db71aa47a
BLAKE2b-256 399e5cc140814983696c017ca36ec404b5efe56992017b99c957e6709d84f399

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