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()iexec()- potencjalnie niebezpieczne funkcjeos.system()- bezpośrednie wywołania systemowesubprocess- 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
- Fork repozytorium
- Utwórz branch:
git checkout -b feature/nowa-funkcjonalność - Commituj:
git commit -am 'Dodaj nową funkcjonalność' - Push:
git push origin feature/nowa-funkcjonalność - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dba4b854ceaf7c3656906dd57323892af75be35dddaa3b7673cdc28ebb3a6b48
|
|
| MD5 |
58869336dc2a22a87364b0d0849ef549
|
|
| BLAKE2b-256 |
87e3d8d46d59a88a7bc3012a8edb041721bcbdd441b201759e858fce49c5825d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfeb4a0987943b6515639ceb5d57b9818d02baf87dd9d6f9a7a9e3b97418801e
|
|
| MD5 |
180438158145189bd9a2f65db71aa47a
|
|
| BLAKE2b-256 |
399e5cc140814983696c017ca36ec404b5efe56992017b99c957e6709d84f399
|