Commit Graph

19 Commits

Author SHA1 Message Date
Vijay Janapa Reddi
f31865560e Add enumitem package to fix itemize formatting
The itemize environment parameters [leftmargin=*, itemsep=1pt, parsep=0pt]
were appearing as visible text in the PDF because the enumitem package
wasn't loaded. This fix adds \usepackage{enumitem} to the preamble.

All itemized lists now format correctly with proper spacing and margins.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 08:43:41 -05:00
Vijay Janapa Reddi
96880b3133 Update tinytorch and tito with module exports
Re-exported all modules after restructuring:
- Updated _modidx.py with new module locations
- Removed outdated autogeneration headers
- Updated all core modules (tensor, autograd, layers, etc.)
- Updated optimization modules (quantization, compression, etc.)
- Updated TITO commands for new structure

Changes include:
- 24 tinytorch/ module files
- 24 tito/ command and core files
- Updated references from modules/source/ to modules/

All modules re-exported via nbdev from their new locations.
2025-11-10 19:42:03 -05:00
Vijay Janapa Reddi
f15a4fabd8 Fix modules 10-13 tests and add CLAUDE.md
- Add CLAUDE.md entry point for Claude AI system
- Fix tito test command to set PYTHONPATH for module imports
- Fix embeddings export directive placement for nbdev
- Fix attention module to export imports properly
- Fix transformers embedding index casting to int
2025-10-25 17:04:00 -04:00
Vijay Janapa Reddi
2cdde18101 Restructure TinyTorch: Move TinyGPT to examples, improve testing framework
Major changes:
- Moved TinyGPT from Module 16 to examples/tinygpt (capstone demo)
- Fixed Module 10 (optimizers) and Module 11 (training) bugs
- All 16 modules now passing tests (100% health)
- Added comprehensive testing with 'tito test --comprehensive'
- Renamed example files for clarity (train_xor_network.py, etc.)
- Created working TinyGPT example structure
- Updated documentation to reflect 15 core modules + examples
- Added KISS principle and testing framework documentation
2025-09-22 09:37:18 -04:00
Vijay Janapa Reddi
90dc7fa6e4 Fix tito test framework to use return codes instead of output parsing
Root cause: Test framework was incorrectly parsing  symbols in educational
output as test failures, causing false negatives on working modules.

Changes:
- Focus on subprocess return codes (0 = success) as definitive test result
- Remove flawed output pattern matching that misinterpreted educational symbols
- Maintain proper error reporting for actual execution failures

Result: All 16 modules now correctly pass tests when they execute successfully,
eliminating false negative test failures.
2025-09-18 16:41:54 -04:00
Vijay Janapa Reddi
62d4820900 Add sync/export reminder to test command
- Add prominent yellow reminder box before all test executions
- Shows clear instructions for 'tito export' and 'tito nbdev build'
- Ensures users sync modules to package before testing
- Displays in both single module tests and all tests
- Prevents testing stale code by reminding users to export latest changes

This ensures users always test the most current code from their development modules.
2025-07-13 22:46:09 -04:00
Vijay Janapa Reddi
5a1e816673 Add debugging hint box for failed external tests
- Add yellow hint box that appears when external tests fail
- Shows specific pytest commands for debugging failing tests
- Includes general debugging commands (verbose, print statements)
- Provides specific test commands with proper pytest formatting
- Includes pro tips for advanced debugging (--pdb, -k patterns, --tb options)
- Enhances student debugging experience with actionable guidance
2025-07-13 22:26:58 -04:00
Vijay Janapa Reddi
601c4b6b21 feat: enhance testing infrastructure with detailed progress and function-level reporting
🎯 Key Improvements:
- Fix test parsing to show individual inline test results (was showing 1/1, now shows actual count like 4/4)
- Display actual function names (test_tensor_arithmetic_comprehensive) for precise debugging
- Add real-time progress indicators showing compilation → inline tests → external tests
- Show module-by-module progress with completion feedback

🚀 Enhanced User Experience:
- Clear progress tracking: 'Starting 01_tensor...' → 'Completed 01_tensor testing (4/4)'
- Function-level test names for immediate debugging capability
- No more silent waiting - real-time feedback on what's happening
- Better success rates with --inline-only flag (90.2% vs 87.4%)

🔧 Technical Changes:
- Fixed parsing logic in _run_inline_tests() to handle start/end markers correctly
- Enhanced test result display to include function names alongside status
- Added granular progress messages in _test_module() method
- Improved overall test reporting across all 9 modules

📊 Impact:
- 37/41 inline tests now properly reported vs generic 'module_tests'
- Clear identification of failing functions for targeted fixes
- Professional, actionable test output for development workflow
2025-07-13 21:53:59 -04:00
Vijay Janapa Reddi
5264b6aa68 Move testing utilities to tito/tools for better software architecture
- Move testing utilities from tinytorch/utils/testing.py to tito/tools/testing.py
- Update all module imports to use tito.tools.testing
- Remove testing utilities from core TinyTorch package
- Testing utilities are development tools, not part of the ML library
- Maintains clean separation between library code and development toolchain
- All tests continue to work correctly with improved architecture
2025-07-13 21:05:11 -04:00
Vijay Janapa Reddi
d3dfec7bea Implement comprehensive testing strategy with inline and external test support
 Features:
- Enhanced tito test command with inline and external test detection
- Multiple report formats: summary, detailed, and default
- Comprehensive test result tracking and reporting
- Support for both individual module testing and all-module testing
- Test function detection and execution within _dev.py files
- External pytest integration with proper result parsing

📊 Results:
- 9 modules tested: 3 fully passing, 6 with various issues
- 141/185 tests passing (76.2% success rate)
- Clear separation of inline vs external test results
- Detailed error reporting for failed tests and compilation issues
2025-07-13 18:17:52 -04:00
Vijay Janapa Reddi
f1d47330b3 Simplify export workflow: remove module_paths.txt, use dynamic discovery
- Remove unnecessary module_paths.txt file for cleaner architecture
- Update export command to discover modules dynamically from modules/source/
- Simplify nbdev command to support --all and module-specific exports
- Use single source of truth: nbdev settings.ini for module paths
- Clean up import structure in setup module for proper nbdev export
- Maintain clean separation between module discovery and export logic

This implements a proper software engineering approach with:
- Single source of truth (settings.ini)
- Dynamic discovery (no hardcoded paths)
- Clean CLI interface (tito package nbdev --export [--all|module])
- Robust error handling with helpful feedback
2025-07-12 17:19:22 -04:00
Vijay Janapa Reddi
83fb269d9f Complete migration from modules/ to assignments/source/ structure
- Migrated all Python source files to assignments/source/ structure
- Updated nbdev configuration to use assignments/source as nbs_path
- Updated all tito commands (nbgrader, export, test) to use new structure
- Fixed hardcoded paths in Python files and documentation
- Updated config.py to use assignments/source instead of modules
- Fixed test command to use correct file naming (short names vs full module names)
- Regenerated all notebook files with clean metadata
- Verified complete workflow: Python source → NBGrader → nbdev export → testing

All systems now working: NBGrader (14 source assignments, 1 released), nbdev export (7 generated files), and pytest integration.

The modules/ directory has been retired and replaced with standard NBGrader structure.
2025-07-12 12:06:56 -04:00
Vijay Janapa Reddi
25e1e77492 Improve CLI: remove redundant --module flags
- Update test, export, and clean commands to use positional arguments
- Change from 'tito module test --module dataloader' to 'tito module test dataloader'
- Eliminates redundant --module flag within module command group
- Update help text and examples to reflect new syntax
- Maintains backward compatibility with --all flag
- More intuitive and consistent CLI design
2025-07-12 00:56:00 -04:00
Vijay Janapa Reddi
de03be4f70 refactor: Reorganize CLI commands for clear separation of concerns
- Rename 'modules' command to 'status' for intuitive module status checking
- Consolidate all testing functionality into 'test' command:
  - 'tito test --module X' for individual module testing with detailed output
  - 'tito test --all' for all modules with progress bar
  - Remove confusing redirection from test to modules
- Simplify 'info' command to focus on system information and course navigation:
  - Remove module implementation status table (moved to status command)
  - Add quick command reference panel
  - Clean separation between system info and module status
- Update all imports and registrations for renamed command

Result: Clean, intuitive CLI with no duplication:
- 'tito status' → Module development status
- 'tito test' → All testing functionality
- 'tito info' → System info and navigation

No more confusing overlaps or redirections between commands.
2025-07-11 22:25:19 -04:00
Vijay Janapa Reddi
39a04bbe65 feat: Add modules command and clean up CLI duplication
- Add new 'tito modules' command for comprehensive module status checking
  - Scans all modules in modules/ directory automatically
  - Shows file structure (dev file, tests, README)
  - Runs tests with --test flag
  - Provides detailed breakdown with --details flag

- Remove duplicate/stub commands:
  - Remove 'tito status' (unimplemented stub)
  - Remove 'tito submit' (unimplemented stub)

- Update 'tito test' command:
  - Focus on individual module testing with detailed output
  - Redirect 'tito test --all' to 'tito modules --test' with recommendation
  - Better error handling with available modules list

- Add comprehensive documentation:
  - docs/development/testing-separation.md - explains module vs package checking
  - docs/development/command-cleanup-summary.md - documents CLI cleanup

Key benefit: Clear separation between module development status (tito modules)
and TinyTorch package functionality (tito info) with no confusing overlaps.
2025-07-11 22:14:53 -04:00
Vijay Janapa Reddi
c7a82b400c feat: update CLI tools for dataloader module
- Update valid modules list in test command: data → dataloader
- Update module display name in info command: Data → DataLoader
- Update CLI references to use new module name
- All CLI commands now recognize 'dataloader' instead of 'data'

Ensures CLI tools work seamlessly with the renamed module.
2025-07-11 18:59:19 -04:00
Vijay Janapa Reddi
a1a3e0f9e4 Add test timeouts and local test data for data module
- Added pytest-timeout configuration with 5-minute timeout for all tests
- Added timeout handling to test command with proper error messages
- Created small local test dataset (50 train + 20 test samples) that mimics CIFAR-10 structure
- Updated data module tests to use local test data instead of downloading CIFAR-10
- Tests now run much faster (~0.1s vs ~30s) and don't require internet connection
- Added TestCIFAR10Dataset class that loads from local pickle files
- All test functionality preserved but using local data for speed and reliability
2025-07-11 18:50:05 -04:00
Vijay Janapa Reddi
b155dec4fc feat: add Networks module with forward-pass and visualizations
- Add modules/networks/networks_dev.py and networks_dev.ipynb (Jupytext/nbdev educational pattern)
- Add comprehensive visualizations: architecture, data flow, layer analysis, network comparison
- Add modules/networks/README.md with learning goals, usage, and visualization docs
- Add modules/networks/tests/test_networks.py with thorough tests for composition, MLPs, and visualizations
- Register 'networks' in CLI info and test commands
- Update CLI info command to check layers/networks status
- This module focuses on forward pass only (no training yet)
2025-07-10 23:16:12 -04:00
Vijay Janapa Reddi
15f5a84863 RESTORE: Complete CLI functionality in new architecture
- Ported all commands from bin/tito.py to new tito/ CLI architecture
- Added InfoCommand with system info and module status
- Added TestCommand with pytest integration
- Added DoctorCommand with environment diagnosis
- Added SyncCommand for nbdev export functionality
- Added ResetCommand for package cleanup
- Added JupyterCommand for notebook server
- Added NbdevCommand for nbdev development tools
- Added SubmitCommand and StatusCommand (placeholders)
- Fixed missing imports in tinytorch/core/tensor.py
- All commands now work with 'tito' command in shell
- Maintains professional architecture while restoring full functionality

Commands restored:
 info - System information and module status
 test - Run module tests with pytest
 doctor - Environment diagnosis
 sync - Export notebooks to package
 reset - Clean tinytorch package
 nbdev - nbdev development commands
 jupyter - Start Jupyter server
 submit - Module submission
 status - Module status
 notebooks - Build notebooks from Python files

The CLI now has both the professional architecture and all original functionality.
2025-07-10 22:39:23 -04:00