Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
182db01
feat: ajustar diseño segun selección del equipo
Nov 7, 2025
36d7f7e
Merge pull request #19 from WorkTeam01/feature/adjust-design
alexricardotapiacarita-ai Nov 8, 2025
b40fa24
feat: actualizar colores en gui.py
Nov 9, 2025
8c6ceda
fix: resolver el conflicto entre rama dev y feature/change-colors
Nov 9, 2025
b3da569
feat: actualizar colores en gui.py
Nov 10, 2025
54f8399
Merge pull request #21 from WorkTeam01/feature/change-colors
alexricardotapiacarita-ai Nov 10, 2025
c776d64
feat: Implementar logica de backend para botones numericos
Nov 11, 2025
92a9fd3
fix: corrección en el duplicado al crear los botones numericos
Nov 12, 2025
ec4c638
Merge pull request #31 from WorkTeam01/feature/display-number-input
Jhos3ph Nov 12, 2025
fb4560c
feat: agregar funcionalidad al botón decimal
Nov 14, 2025
3b36c97
Merge pull request #32 from WorkTeam01/feature/decimal-digis
alexricardotapiacarita-ai Nov 14, 2025
b54bf59
feat(core): Implementar logica de operaciones matematicas (+, -, *, /…
Nov 16, 2025
5a406b9
Merge pull request #33 from WorkTeam01/feature/mathematical-operations
Jhos3ph Nov 16, 2025
b10d4f7
feat: implementar botones C y ⌫ con su funcionalidad correspondiente
Nov 18, 2025
605c1cb
Merge pull request #34 from WorkTeam01/feature/clear-and-backspace
alexricardotapiacarita-ai Nov 18, 2025
e3687ca
feat: Agregar funciones de valor absoluto (abs), maximo (max) y minim…
Nov 18, 2025
9aa9299
Merge branch 'dev' into feature/functions-max-min-abs and resolved co…
Nov 18, 2025
ad983d0
Merge pull request #35 from WorkTeam01/feature/functions-max-min-abs
Jhos3ph Nov 19, 2025
515568a
refactor: refactorizar lógica de operaciones unarias
Nov 21, 2025
f4e1d79
refactor(gui): mejorar funciones unarias y manejo de errores
Nov 21, 2025
1f1c084
docs: crear guia de usuario para GUI
Nov 21, 2025
a98b28b
docs: moviendo la carpetadocs
Nov 23, 2025
58f7609
Merge pull request #40 from WorkTeam01/docs/user-guide
alexricardotapiacarita-ai Nov 23, 2025
7666e25
refactor(gui): agregar unary_operation y manejar errores en el display
Nov 23, 2025
01829bd
Merge branch 'dev' into feature/refactor-unary-functions
Nov 23, 2025
67faa4b
Merge pull request #39 from WorkTeam01/feature/refactor-unary-functions
Jhos3ph Nov 23, 2025
e83d818
feat: configurar CI/CD con GitHub Actions
Jandres25 Nov 24, 2025
253ab8c
Merge pull request #42 from WorkTeam01/feature/configure-github-actio…
Jandres25 Nov 26, 2025
ce77be8
feat(gui): soporte números negativos y validaciones
Nov 26, 2025
fd0c5b4
Merge branch 'dev' into feat/soporte-numeros-negativos
Nov 26, 2025
5cc5697
docs: actualizar README con detalles de la GUI y estructura del proyecto
Nov 26, 2025
5358d63
test: agregar casos de prueba para números negativos
Nov 27, 2025
4833a81
Merge pull request #45 from WorkTeam01/feat/soporte-numeros-negativos
Jhos3ph Nov 27, 2025
1f150cd
hotfix(gui): eliminar lógica redundante en el manejo de operadores
Nov 27, 2025
02fa3fa
refactor(gui): eliminar lógica redundante restante
Nov 27, 2025
2365afa
feat: agregar soporte de teclado para calculadora GUI y validaciones
Jandres25 Nov 27, 2025
468ec52
Merge pull request #46 from WorkTeam01/hotfix/remove-redundant-code
Jhos3ph Nov 27, 2025
77b517a
Merge dev into feature/keyboard-support: resolve conflicts in gui.py
Jandres25 Nov 27, 2025
b599aef
fix: corrige espacios en nombres de métodos y atributos
Jandres25 Nov 28, 2025
9a56e17
Merge pull request #47 from WorkTeam01/feature/keyboard-support
Jandres25 Nov 28, 2025
9dc6c26
test: agregar tests de GUI con mocks de tkinter
Jandres25 Nov 28, 2025
72e0280
Merge pull request #48 from WorkTeam01/feature/testing-gui
Jandres25 Nov 28, 2025
9d42a24
docs: actualizar documentación para release v2.0.0
Jandres25 Nov 28, 2025
c733ddb
Merge pull request #51 from WorkTeam01/release/v2.0.0
Jandres25 Nov 29, 2025
e3931a7
fix: corregir errores tipográficos en README y CHANGELOG
Jandres25 Nov 30, 2025
b8c1ab8
Merge branch 'main' into dev
Jandres25 Nov 30, 2025
64ad017
fix: estandarizar la entrada decimal negativa y anteponer automáticam…
Nov 30, 2025
4e8eb73
refactor: reorganizar proyecto con estructura src/ y tests/
Jandres25 Nov 30, 2025
fdcc694
Merge pull request #54 from WorkTeam01/refactor/project-structure
Jandres25 Nov 30, 2025
9044432
evitar la entrada '-.' y corregir automáticamente a '-0.' para un com…
Dec 1, 2025
fd7e02d
fix: corregir importaciones de calculator eliminando el prefijo de punto
Jandres25 Dec 1, 2025
464edb5
fix: ajustar importaciones de calculator para manejar errores de impo…
Jandres25 Dec 1, 2025
f399f3f
Merge pull request #55 from WorkTeam01/fix/decimal-after-minus
alexricardotapiacarita-ai Dec 1, 2025
75213fd
feat: implementar soporte de paréntesis en calculadora GUI para evalu…
Jandres25 Dec 2, 2025
7ca0b07
feat: agregar soporte para paréntesis en la calculadora y pruebas cor…
Jandres25 Dec 2, 2025
98a1d62
Merge pull request #56 from WorkTeam01/feature/parenthesis-support
Jandres25 Dec 2, 2025
417c009
fix: evitar resultados complejos para raíces pares negativas
Dec 3, 2025
ceed4ee
Merge pull request #57 from WorkTeam01/fix/negative-roots-validation
Jhos3ph Dec 3, 2025
11ba400
docs: actualizar documentación para release v2.1.0
Jandres25 Dec 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
pip install -r requirements.txt

- name: Run tests
run: pytest -v
152 changes: 148 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,152 @@ y este proyecto se adhiere a [Semantic Versioning](https://semver.org/spec/v2.0.

---

## [2.1.0] - 2025-12-03

### 🎉 Minor Release - Operaciones con Paréntesis + Reorganización de Proyecto

Este release introduce soporte completo para expresiones matemáticas con paréntesis, reorganiza la estructura del proyecto siguiendo mejores prácticas de Python, y corrige bugs importantes relacionados con números complejos y decimales negativos.

### Agregado

#### Operaciones con Paréntesis (#44, #56)

- **Soporte completo de paréntesis** en la calculadora GUI
- Evaluación de expresiones matemáticas complejas: `(2+3)*4`, `2*(3+4)`, `((2+3)*4)/5`
- Botones funcionales `(` y `)` en la interfaz
- Entrada de paréntesis desde teclado
- Validación de paréntesis balanceados
- Validación de caracteres seguros con regex
- Modo de expresión automático al usar paréntesis
- Compatibilidad con modo normal (sin paréntesis)
- Soporte para decimales y números negativos en expresiones
- Paréntesis anidados soportados

#### Testing de Paréntesis

- **13 tests unitarios nuevos** para funcionalidad de paréntesis (#56)
- Tests de operaciones básicas con paréntesis
- Tests de paréntesis anidados
- Tests con decimales y números negativos
- Tests con potencias
- Tests de validación de paréntesis desbalanceados
- Tests de modo de expresión
- Tests de compatibilidad entre modos
- Tests de división por cero en expresiones
- Tests de actualización del display

#### Reorganización del Proyecto (#53, #54)

- **Nueva estructura de carpetas** profesional
- Carpeta `src/` para código fuente
- `src/calculator.py` - Lógica matemática
- `src/cli.py` - Interfaz de línea de comandos (renombrado desde main.py)
- `src/gui.py` - Interfaz gráfica
- `src/__init__.py` - Paquete Python
- Carpeta `tests/` para tests
- `tests/test_calculator.py`
- `tests/test_gui.py` (renombrado desde test_gui_calculator.py)
- `tests/conftest.py`
- `tests/__init__.py`
- Archivo `requirements.txt` para gestión de dependencias
- **Mejor escalabilidad** y organización del código
- **Imports mejorados** con estructura de paquetes
- **Comandos actualizados**: `python src/gui.py`, `python src/cli.py`

### Corregido

#### Raíces Pares de Números Negativos (#50, #57)

- **Fix: Evitar resultados complejos** en raíces pares negativas
- Validación en `calculator.py` para detectar raíces pares de negativos
- Lanza `ValueError` con mensaje "Raíz negativa"
- Captura del error en GUI con mensaje claro "⚠️ Raíz negativa"
- Tests unitarios para verificar el comportamiento
- Ejemplo: `-2 ^ 0.5` ahora muestra error en lugar de `1.414j`
- Algoritmo: valida si `1/exponent` es par para detectar raíces pares

#### Manejo de Decimales Negativos (#49, #55)

- **Mejora de UX** en entrada de decimales negativos
- Autocompletado de `-0.` al presionar `.` después de `-`
- Validación mejorada para evitar números incompletos como `-.`
- Comportamiento consistente: `"-"` + `"."` → `"-0."`
- Ejemplo: `-.3` ahora se autocompleta a `-0.3`
- Mejor experiencia de usuario y consistencia

### Mejorado

- **Evaluación de expresiones** con validación de seguridad usando regex
- **Manejo de errores** más robusto con mensajes específicos
- **Display de GUI** actualizado correctamente en modo expresión
- **Backspace** funciona en ambos modos (normal y expresión)
- **Clear** resetea correctamente el modo de expresión
- **Estructura del proyecto** más profesional y escalable
- **Imports** más claros y mantenibles

### Técnico

**Paréntesis:**

- Implementación de `open_parenthesis_click()` y `close_parenthesis_click()`
- Variable `expression` para construir expresiones completas
- Variable `use_expression_mode` para detectar uso de paréntesis
- Validación con regex `^[\d\s\+\-\*\/\^\(\)\.]+$`
- Conversión de `^` a `**` para evaluación de potencias
- Evaluación segura con `eval()` después de validaciones
- Manejo de excepciones: `SyntaxError`, `ZeroDivisionError`

**Reorganización:**

- Migración de archivos a `src/` y `tests/`
- Actualización de imports relativos
- Creación de `__init__.py` en paquetes
- `requirements.txt` con `pytest>=7.0.0`

**Validaciones:**

- Detección de raíces pares con algoritmo de inversión de exponente
- Validación de decimales negativos en `decimal_click()`

### Issues y PRs Incluidas

**Issues Completadas:**

- #44 - Soporte de operaciones con paréntesis en la calculadora GUI
- #50 - Error: Raíces pares de números negativos generan resultados complejos
- #49 - Error: Manejo confuso de números decimales negativos
- #53 - Mejora: reorganizar estructura del proyecto

**Pull Requests Mergeados:**

- #57 - fix: evitar resultados complejos para raíces pares negativas (2025-12-03)
- #56 - feat: implementar soporte de paréntesis en calculadora (2025-12-02)
- #55 - Fix: Corrección del comportamiento del decimal después del signo menos (2025-12-01)
- #54 - refactor: reorganizar estructura del proyecto (src/, tests/, requirements.txt) (2025-11-30)

### Agradecimientos

Este release fue posible gracias a las contribuciones de:

- **@Jandres25** (Jose Andres Meneces Lopez)

- Implementación de soporte de paréntesis (#56)
- 13 tests unitarios para paréntesis
- Reorganización de estructura del proyecto (#54)
- Coordinación del release v2.1.0

- **@Jhos3ph**

- Fix de raíces pares negativas (#57)
- Validación de números complejos
- Tests unitarios para validación

- **@alexricardotapiacarita-ai**
- Fix de manejo de decimales negativos (#55)
- Mejoras de UX en entrada de números

---

## [2.0.0] - 2025-11-28

### 🎉 Major Release - Interfaz Gráfica + Testing Automatizado
Expand Down Expand Up @@ -201,14 +347,12 @@ Este release fue posible gracias a las contribuciones de:

---

## [Próximamente] - v2.1.0
## [Próximamente] - v3.0.0

### Planeado

- Soporte de operaciones con paréntesis en GUI (#44)
- Fix: Manejo de números decimales negativos (#49)
- Fix: Raíces pares de números negativos (#50)
- Historial de operaciones
- Más funciones matemáticas (raíz cuadrada, logaritmos, trigonometría)
- Temas personalizables (claro/oscuro)
- Exportar historial de cálculos
- Modo científico avanzado
Loading