Skip to content

Commit 9c9cdbe

Browse files
committed
Merge remote-tracking branch 'origin/main' into dev
2 parents ac3cc7c + 57f7dbd commit 9c9cdbe

3 files changed

Lines changed: 156 additions & 385 deletions

File tree

CLAUDE.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# CLAUDE.md
2+
3+
Este archivo proporciona orientación a Claude Code (claude.ai/code) al trabajar con el código en este repositorio.
4+
5+
## Comandos
6+
7+
```bash
8+
# Instalar dependencias
9+
pip install -r requirements.txt
10+
11+
# Ejecutar todas las pruebas (sin interfaz gráfica, funciona en CI)
12+
pytest -v
13+
14+
# Ejecutar un archivo de pruebas específico
15+
pytest tests/test_calculator.py -v
16+
pytest tests/test_gui.py -v
17+
18+
# Ejecutar una prueba específica por palabra clave
19+
pytest tests/test_gui.py -k "parenthesis" -v
20+
21+
# Ejecutar con cobertura
22+
pytest --cov=src -v
23+
24+
# Lanzar la aplicación con GUI
25+
python src/gui.py
26+
27+
# Lanzar la aplicación por CLI
28+
python src/cli.py
29+
```
30+
31+
## Arquitectura
32+
33+
Calculadora Python con tres capas:
34+
35+
**Core (`src/calculator.py`):** Funciones puras sin dependencias externas — `add`, `subtract`, `multiply`, `divide`, `power`, `valor_maximo`, `valor_minimo`, `abs_value`. Lanza `ZeroDivisionError` y `ValueError` para entradas inválidas.
36+
37+
**GUI (`src/gui.py`):** Clase única `CalculatorGUI` con tkinter. Funciona en dos modos controlados por `use_expression_mode`:
38+
- **Modo normal:** Cálculos de dos operandos usando el estado `first_number` + `operator` + `current_value`
39+
- **Modo expresión:** Se activa al usar paréntesis; construye una cadena `expression` que se evalúa mediante parsing con regex y las funciones de `calculator.py`
40+
41+
**CLI (`src/cli.py`):** Bucle interactivo que parsea entradas como `"5 + 3"` o `"5 abs"`.
42+
43+
**Tests (`tests/`):** `conftest.py` provee mocks `DummyRoot`, `DummyEntry`, `DummyButton`, `DummyLabel` que reemplazan tkinter automáticamente (fixture autouse), permitiendo pruebas de GUI sin pantalla en CI.
44+
45+
## Ramas y Convención de Commits
46+
47+
Nomenclatura de ramas: `feature/*`, `bugfix/*`, `hotfix/*`, `release/*` a partir de `dev`; los PRs se fusionan a `dev` y luego a `main`.
48+
49+
Los commits siguen [Conventional Commits](https://www.conventionalcommits.org/): `feat:`, `fix:`, `test:`, `docs:`, `refactor:`, `chore:`.
50+
51+
El CI ejecuta pytest en push/PR a `main` y `dev` mediante `.github/workflows/ci.yml`.

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2025 WorkTeam01 - ClaudeOps
3+
Copyright (c) 2025 WorkTeam01
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

0 commit comments

Comments
 (0)