Skip to main content

Back-to-basics Tkinter IDE for 9 vintage + modern languages with turtle graphics

Project description

Time Warp Classic

Back-to-basics Tkinter IDE for 9 vintage + modern languages with turtle graphics.

Time Warp Classic is an educational multi-language IDE that bridges the past and present of programming, supporting 9 programming languages through an elegant graphical interface with integrated turtle graphics, inspired by the golden age of computing.

Version Python License education ide tkinter multi-language turtle-graphics


๐ŸŒŸ Features

Multi-Language Support

Execute code in 9 different programming languages โ€” six with full built-in interpreters and three delegating to external runtimes:

Built-in Interpreters:

  • PILOT (1968) โ€” Educational computer-assisted instruction
  • BASIC (1964) โ€” Classic line-numbered programming with turtle graphics
  • Logo (1967) โ€” Visual turtle graphics programming
  • Pascal (1970) โ€” Structured programming with strong typing
  • Prolog (1972) โ€” Logic programming with facts, rules, and backtracking
  • Forth (1970) โ€” Stack-based concatenative programming

External Runtime Executors:

  • Perl (1987) โ€” Text processing and pattern matching (requires perl)
  • Python (1991) โ€” Modern general-purpose programming (uses host Python)
  • JavaScript (1995) โ€” Web scripting with ES6+ features (requires Node.js)

Professional IDE Interface

  • Menu System โ€” File, Edit, Program, Debug, Test, Performance, Preferences, About
  • Syntax Highlighting โ€” Real-time syntax coloring via Pygments (with plain-text fallback)
  • Line Numbers โ€” Always-visible line numbering for easy navigation
  • Integrated Editor โ€” Code editing with undo/redo, find & replace (regex support)
  • Output Panel โ€” Immediate program execution feedback
  • Turtle Graphics Canvas โ€” Visual programming with integrated graphics display
  • Theme Support โ€” 9 color themes (Light, Dark, Classic, Solarized Dark/Light, Monokai, Dracula, Nord, High Contrast) with persistence
  • Customizable Fonts โ€” 7 font sizes (Tiny 8 pt to Giant 22 pt) plus system monospace families
  • Debug Tools โ€” Debug mode toggle, breakpoint management, error history tracking
  • Performance Tools โ€” Execution statistics, optimization, and profiling toggle
  • Settings Persistence โ€” Theme, font, and preferences saved to ~/.timewarp_settings.json

Educational Focus

  • Enhanced Error Messages โ€” Detailed error reporting with line numbers and context
  • Debug Tools โ€” Breakpoint support, debug mode, error history
  • Testing Framework โ€” Built-in smoke tests and full test suite via menu
  • Example Programs โ€” Comprehensive demos for every language
  • Immediate Feedback โ€” Run code with F5, see results instantly
  • Visual Programming โ€” Logo turtle graphics for immediate visual learning

๐Ÿ“ฆ Installation

Prerequisites

  • Python 3.9 or higher (tested up to 3.14)
  • tkinter (usually included with Python)
  • pip package manager
  • Node.js (optional โ€” for JavaScript execution)
  • Perl (optional โ€” for Perl execution)

Quick Start

  1. Clone the repository:

    git clone https://github.com/James-HoneyBadger/Time_Warp_Classic.git
    cd Time_Warp_Classic
    
  2. Launch with the setup script (recommended):

    python3 run.py
    

    This automatically creates a virtual environment, installs dependencies, and launches the IDE.

    Or use the platform-specific scripts:

    ./run.sh          # Linux / macOS
    run.bat            # Windows
    
  3. Or install manually:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    pip install -r requirements.txt
    python Time_Warp.py
    

See SETUP.md for detailed installation, troubleshooting, and advanced options.

๐Ÿ“ฆ Releases

This repository publishes Python package releases through GitHub Actions using tag-based workflows:

  • Stable tags (vX.Y.Z) publish to PyPI
  • Prerelease tags (vX.Y.Z-rcN, vX.Y.Z-betaN, vX.Y.Z-alphaN) publish to TestPyPI

Tag Examples

# Prerelease to TestPyPI
git tag v1.3.2-rc1
git push origin v1.3.2-rc1

# Stable release to PyPI
git tag v1.3.2
git push origin v1.3.2

Workflows

  • Stable publish workflow: .github/workflows/publish-pypi.yml
  • Prerelease publish workflow: .github/workflows/publish-testpypi.yml
  • GitHub Packages (GHCR) workflow: .github/workflows/publish-ghcr.yml

GitHub Packages (GHCR)

GitHub Packages will show a published package after pushing a version tag (vX.Y.Z).

  • Package registry: ghcr.io
  • Package name: ghcr.io/james-honeybadger/time-warp-classic
# Pull latest stable image
docker pull ghcr.io/james-honeybadger/time-warp-classic:latest

# Run on Linux with X11 forwarding (GUI)
xhost +local:docker
docker run --rm \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  ghcr.io/james-honeybadger/time-warp-classic:latest

Use a specific release image tag (for example v1.3.2) instead of latest when needed.

One-time setup: configure Trusted Publishers for this repository on both PyPI and TestPyPI, and ensure GitHub environments pypi and testpypi exist.

๐Ÿงช Testing

Time_Warp_Classic includes a comprehensive test suite to ensure code quality and reliability.

Running Tests

From Command Line

# Run all tests
python scripts/run_tests.py

# Run specific test types
python scripts/run_tests.py unit        # Unit tests only
python scripts/run_tests.py integration # Integration tests only
python scripts/run_tests.py smoke       # Quick smoke test

# Run with coverage
python scripts/run_tests.py --coverage

From Within the Application

Use the Test menu in the IDE:

  • Run Smoke Test โ€” Quick functionality check
  • Run Full Test Suite โ€” Complete test suite with verbose output

Test Structure

tests/
โ”œโ”€โ”€ conftest.py              # Shared fixtures and configuration
โ”œโ”€โ”€ test_interpreter.py      # Core interpreter tests
โ”œโ”€โ”€ test_basic.py            # BASIC language tests
โ”œโ”€โ”€ test_logo.py             # Logo language tests
โ”œโ”€โ”€ test_pilot.py            # PILOT language tests
โ”œโ”€โ”€ test_pascal.py           # Pascal language tests
โ”œโ”€โ”€ test_prolog.py           # Prolog language tests
โ”œโ”€โ”€ test_forth.py            # Forth language tests
โ”œโ”€โ”€ test_executors.py        # Subprocess executor tests
โ”œโ”€โ”€ test_all_commands.py     # Cross-language command tests
โ”œโ”€โ”€ test_gui.py              # GUI tests
โ”œโ”€โ”€ test_stubs.py            # Stub class tests
โ””โ”€โ”€ test_languages_package.py # Language package tests

๐Ÿš€ Getting Started

Using the GUI

When you launch Time_Warp.py, you'll see the main IDE interface:

  1. Select Language - Choose from the dropdown (PILOT, BASIC, Logo, etc.)
  2. Write Code - Use the left editor panel
  3. Run Program - Press F5 or use Program โ†’ Run Program
  4. View Results - See output in the right panel and graphics below

Quick Example

Try this Logo program:

REPEAT 4 [
  FORWARD 100
  RIGHT 90
]

Or this BASIC program:

10 PRINT "Hello from the past!"
20 FOR I = 1 TO 5
30   PRINT "Count: "; I
40 NEXT I
50 END

Loading Examples

Via Menu:

  1. Program โ†’ Load Example
  2. Select a language submenu
  3. Choose an example program

Via File Menu:

  1. File โ†’ Open File...
  2. Navigate to examples/[language]/
  3. Select an example file

๐Ÿ“š Documentation

User Documentation

Technical Documentation

Additional References

Language References

Individual reference docs for each language are in docs/languages/: PILOT, BASIC, Logo, Pascal, Prolog, Forth, Perl, Python, JavaScript.

๐ŸŽจ Supported Languages

Vintage Languages (Built-in Interpreters)

PILOT (1968)

Computer-Assisted Instruction language designed for educational software.

T:Welcome to PILOT programming!
A:What is your name?
T:Hello, *NAME*!

BASIC (1964)

The classic beginner's language with line numbers and turtle graphics.

10 PRINT "Drawing a square..."
20 FOR I = 1 TO 4
30   FORWARD 100
40   RIGHT 90
50 NEXT I

Logo (1967)

Educational language famous for turtle graphics.

REPEAT 36 [
  FORWARD 100
  RIGHT 10
]

Pascal (1970)

Structured programming language emphasizing clear code.

program Hello;
begin
  WriteLn('Hello from Pascal!');
end.

Prolog (1972)

Logic programming with facts, rules, and queries.

parent(john, mary).
parent(john, tom).
sibling(X, Y) :- parent(P, X), parent(P, Y), X \= Y.

Forth (1970)

Stack-based concatenative programming language.

: SQUARE DUP * ;
5 SQUARE .

Modern Languages (External Runtime Executors)

Perl (1987)

Powerful text processing and scripting. Requires perl on PATH.

my @numbers = (1, 2, 3, 4, 5);
my $sum = 0;
$sum += $_ for @numbers;
print "Sum: $sum\n";

Python (1991)

Clean, readable general-purpose programming. Uses the host Python interpreter.

numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(f"Squares: {squares}")

JavaScript (1995)

Modern web scripting with ES6+ features. Requires Node.js on PATH.

const numbers = [1, 2, 3, 4, 5];
const squares = numbers.map(n => n ** 2);
console.log(`Squares: ${squares}`);

๏ฟฝ๏ธ Project Structure

Time_Warp_Classic/
โ”œโ”€โ”€ Time_Warp.py              # Thin entry point (launches gui.app.TimeWarpApp)
โ”œโ”€โ”€ run.py                    # Cross-platform launcher with venv/dependency setup
โ”œโ”€โ”€ run.sh / run.bat          # Platform-specific launcher scripts
โ”œโ”€โ”€ README.md                 # This file
โ”œโ”€โ”€ requirements.txt          # Python dependencies
โ”œโ”€โ”€ pyproject.toml            # Python project metadata and tool config
โ”‚
โ”œโ”€โ”€ gui/                      # GUI package (tkinter IDE)
โ”‚   โ”œโ”€โ”€ app.py                # TimeWarpApp โ€” main IDE window and layout
โ”‚   โ”œโ”€โ”€ menus.py              # Menu bar construction (8 menus)
โ”‚   โ”œโ”€โ”€ dialogs.py            # Find/Replace dialogs, About, error history
โ”‚   โ””โ”€โ”€ themes.py             # 9 themes, font sizes, extension mappings
โ”‚
โ”œโ”€โ”€ core/                     # Core interpreter engine
โ”‚   โ”œโ”€โ”€ interpreter.py        # Time_WarpInterpreter โ€” central execution engine
โ”‚   โ”œโ”€โ”€ stubs.py              # Placeholder classes (audio, games, hardware, IoT)
โ”‚   โ”œโ”€โ”€ languages/            # Language-specific executors
โ”‚   โ”‚   โ”œโ”€โ”€ base.py           # SubprocessExecutor base class
โ”‚   โ”‚   โ”œโ”€โ”€ pilot.py          # TwPilotExecutor (built-in)
โ”‚   โ”‚   โ”œโ”€โ”€ basic.py          # TwBasicExecutor (built-in)
โ”‚   โ”‚   โ”œโ”€โ”€ logo.py           # TwLogoExecutor (built-in)
โ”‚   โ”‚   โ”œโ”€โ”€ pascal.py         # TwPascalExecutor (built-in)
โ”‚   โ”‚   โ”œโ”€โ”€ prolog.py         # TwPrologExecutor (built-in)
โ”‚   โ”‚   โ”œโ”€โ”€ forth.py          # TwForthExecutor (built-in)
โ”‚   โ”‚   โ”œโ”€โ”€ perl.py           # PerlExecutor (subprocess โ†’ perl)
โ”‚   โ”‚   โ”œโ”€โ”€ python_executor.py # PythonExecutor (subprocess โ†’ python)
โ”‚   โ”‚   โ””โ”€โ”€ javascript_executor.py # JavaScriptExecutor (subprocess โ†’ node)
โ”‚   โ”œโ”€โ”€ features/
โ”‚   โ”‚   โ””โ”€โ”€ syntax_highlighting.py  # Pygments-based highlighting + line numbers
โ”‚   โ”œโ”€โ”€ optimizations/        # Performance optimizer, GUI optimizer, memory manager
โ”‚   โ””โ”€โ”€ utilities/            # Helper utilities
โ”‚
โ”œโ”€โ”€ examples/                 # Example programs organized by language
โ”‚   โ”œโ”€โ”€ pilot/ basic/ logo/ pascal/ prolog/ forth/
โ”‚   โ”œโ”€โ”€ perl/ python/ javascript/
โ”‚   โ””โ”€โ”€ README.md             # Examples documentation
โ”‚
โ”œโ”€โ”€ docs/                     # Comprehensive documentation
โ”‚   โ”œโ”€โ”€ README.md             # Documentation index
โ”‚   โ”œโ”€โ”€ INDEX.md              # Full doc suite navigation
โ”‚   โ”œโ”€โ”€ QUICK_START.md        # Quick start guide
โ”‚   โ”œโ”€โ”€ FAQ.md                # Frequently asked questions
โ”‚   โ”œโ”€โ”€ TROUBLESHOOTING.md    # Troubleshooting guide
โ”‚   โ”œโ”€โ”€ user/                 # User guides
โ”‚   โ”‚   โ””โ”€โ”€ LANGUAGE_TUTORIALS.md
โ”‚   โ”œโ”€โ”€ dev/                  # Developer docs
โ”‚   โ”‚   โ””โ”€โ”€ TECHNICAL_REFERENCE.md
โ”‚   โ””โ”€โ”€ languages/            # Per-language reference (9 files)
โ”‚
โ”œโ”€โ”€ tests/                    # Test suite (pytest)
โ””โ”€โ”€ scripts/                  # Launcher and test-runner scripts

โŒจ๏ธ Keyboard Shortcuts

Program Execution

  • F5 โ€” Run current program

File Operations

  • Ctrl+N โ€” New file
  • Ctrl+O โ€” Open file
  • Ctrl+S โ€” Save file
  • Ctrl+Q โ€” Exit application

Editing

  • Ctrl+Z โ€” Undo
  • Ctrl+Y โ€” Redo
  • Ctrl+X โ€” Cut
  • Ctrl+C โ€” Copy
  • Ctrl+V โ€” Paste
  • Ctrl+A โ€” Select all
  • Ctrl+F โ€” Find
  • Ctrl+H โ€” Find & Replace

๐ŸŽฏ Use Cases

Education

  • Learn Programming Fundamentals - Start with PILOT or BASIC
  • Explore Programming Paradigms - Compare procedural, logic, and functional styles
  • Visual Learning - Use Logo for immediate visual feedback
  • Historical Perspective - Experience the evolution of programming languages

Hobbyist Programming

  • Retro Computing - Experience classic languages on modern hardware
  • Creative Coding - Use turtle graphics for artistic expression
  • Language Exploration - Try 9 languages without multiple installations
  • Quick Prototyping - Test algorithms in different paradigms

Teaching

  • Classroom Tool - Teach multiple languages with one IDE
  • Interactive Lessons - Use example programs as teaching aids
  • Comparative Learning - Show same concepts across languages
  • Hands-on Practice - Immediate execution and feedback

๐Ÿ”ง System Requirements

Minimum Requirements

  • OS: Windows 7+, macOS 10.12+, Linux (any modern distribution)
  • Python: 3.9 or higher
  • RAM: 512 MB
  • Display: 1024x768 or higher

Recommended Requirements

  • OS: Windows 10+, macOS 11+, Fedora 40+, Ubuntu 22.04+
  • Python: 3.11 or higher
  • RAM: 2 GB
  • Display: 1920x1080 or higher

Required

  • tkinter โ€” GUI framework (usually included with Python)

Recommended (Optional)

  • pygame-ce โ€” Graphics and multimedia support (community edition; or pygame)
  • Pillow โ€” Image processing features
  • Pygments โ€” Syntax highlighting in the editor

Development Only

  • pytest โ€” Testing framework
  • black โ€” Code formatting
  • flake8 โ€” Linting

All optional packages degrade gracefully โ€” the IDE works without them, with reduced features noted at startup.


๐Ÿค Contributing

Contributions are welcome! Please see TECHNICAL_REFERENCE.md for architecture details.

Quick Contributing Guide

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes and test thoroughly
  4. Commit your changes (git commit -m 'Add amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Development Setup

# Clone your fork
git clone https://github.com/YOUR_USERNAME/Time_Warp_Classic.git
cd Time_Warp_Classic

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install all dependencies (runtime + dev tools)
pip install -r requirements.txt

# Run tests
pytest

# Format code
black .

# Lint code
flake8

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • PILOT Language โ€” Inspired by John Amsden Starkweather's original 1968 design
  • BASIC โ€” Tribute to Kemeny and Kurtz's accessible programming vision
  • Logo โ€” Honoring Seymour Papert's educational computing legacy
  • Pascal โ€” Niklaus Wirth's vision of structured programming
  • Prolog โ€” Alain Colmerauer's logic programming breakthrough
  • Forth โ€” Charles H. Moore's elegantly minimal stack machine
  • Classic Computing Community โ€” For keeping vintage computing alive
  • Open Source Contributors โ€” Everyone who helps improve Time Warp

๐Ÿ“ž Support

  • Documentation: See the docs/ directory
  • Issues: Report bugs on GitHub Issues
  • Questions: Check the FAQ first
  • Community: Share your programs and experiences!

๐ŸŽ“ Learning Resources

For Beginners

Start with PILOT or BASIC, then try Logo for visual programming.

For Intermediate Programmers

Explore Pascal for structured programming, then try Prolog for logic programming or Forth for stack-based thinking.

For Advanced Users

Compare implementations across all 9 languages, study the Technical Reference, or extend the interpreter with new features.


๐Ÿšง Roadmap

  • Syntax highlighting in editor (via Pygments)
  • Debug mode with breakpoints and error history
  • Comprehensive example programs for all 9 languages
  • Language tutorials and reference documentation
  • 9 color themes with persistence
  • Performance optimization system
  • Code completion and IntelliSense
  • Plugin system for custom languages
  • Export programs to standalone executables
  • Web-based version

Time Warp Classic โ€” Programming Through the Ages ๐Ÿ•ฐ๏ธ

ยฉ 2025โ€“2026 Honey Badger Universe | Educational Software

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

timewarp_classic-1.3.4.tar.gz (209.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

timewarp_classic-1.3.4-py3-none-any.whl (144.0 kB view details)

Uploaded Python 3

File details

Details for the file timewarp_classic-1.3.4.tar.gz.

File metadata

  • Download URL: timewarp_classic-1.3.4.tar.gz
  • Upload date:
  • Size: 209.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for timewarp_classic-1.3.4.tar.gz
Algorithm Hash digest
SHA256 78deae6eef01916496884cd2fbc5c19474b8aa06bf1bb36c41340b8d0cf1ae86
MD5 9eca495e7513606d54e41bcedc809456
BLAKE2b-256 74de2132678289f244dab890ab12d8eee98426da35357dff6c716b87ac97f2c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for timewarp_classic-1.3.4.tar.gz:

Publisher: publish-pypi.yml on James-HoneyBadger/Time_Warp_Classic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file timewarp_classic-1.3.4-py3-none-any.whl.

File metadata

File hashes

Hashes for timewarp_classic-1.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5affe08ef7daf28b8df0505c7860912ab2eced07fdf2483e0a4aa57b260b7115
MD5 0e88e6756073dafb4b9d7fff4737ddd7
BLAKE2b-256 c21bf906714b98b2047e3b724fb71543b193bed2b346a65ddb2e466bf2596b62

See more details on using hashes here.

Provenance

The following attestation bundles were made for timewarp_classic-1.3.4-py3-none-any.whl:

Publisher: publish-pypi.yml on James-HoneyBadger/Time_Warp_Classic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page