🔍 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! ✨
Metadata
Release files for spylog 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spylog-0.1.3.tar.gz | 10.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spylog-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.6 kB
Release files / spylog-0.1.3.tar.gz
| Download URL | spylog-0.1.3.tar.gz |
|---|---|
| Size | 10.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dba4b854ceaf7c3656906dd57323892af75be35dddaa3b7673cdc28ebb3a6b48
|
|
BLAKE2b-256 checksum How to use checksums |
87e3d8d46d59a88a7bc3012a8edb041721bcbdd441b201759e858fce49c5825d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Release files / spylog-0.1.3-py3-none-any.whl
| Download URL | spylog-0.1.3-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cfeb4a0987943b6515639ceb5d57b9818d02baf87dd9d6f9a7a9e3b97418801e
|
|
BLAKE2b-256 checksum How to use checksums |
399e5cc140814983696c017ca36ec404b5efe56992017b99c957e6709d84f399
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|