Metadata-Version: 2.4
Name: pio-robo
Version: 0.4.0
Summary: A simple grid-based robot programming environment for teaching Python functions-first.
Author: Edward Withers
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: Education
Classifier: Topic :: Education
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: student
Requires-Dist: pytest<10,>=8; extra == "student"
Provides-Extra: dev
Requires-Dist: pytest<10,>=8; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Dynamic: license-file

# 🤖 Robo – Classroom Programming Environment

A simple Python-based learning environment for teaching programming functions-first through grid-based robot challenges.

## Setup

### Install from PyPI

```bash
pip install pio-robo
```

### Development install

```bash
git clone <repo>
cd robo
pip install -e .
```

## Run a world

From a student project folder:

```bash
python -m robo world1.0
```

Student solution files live in:

```text
exercises/
  world1_0.py
```

## Check progress

```bash
python -m robo summary
```

`summary` also shows the local submission status. World results are recorded
in the project's hidden `.robo/` folder.

Before creating projects, each pupil registers the pseudonymous ID supplied
by their teacher once:

```bash
python -m robo register PUPIL-1042
```

The ID is stored in the user's local Robo configuration and is reused for
future projects:

```bash
python -m robo new loops-practice
python -m robo register --show
```

Use a school-controlled ID, not a pupil's name or email address. Robo does
not ask pupils for names or email addresses. Registration refuses to replace
an existing ID unless `--force` is used. The `new` command also accepts
`--student-id` as an explicit override for testing or administration.

To submit recorded results, use:

```bash
python -m robo submit
```

The package includes the school's submission endpoint. Teachers can override
it for testing by setting the `ROBO_SUBMIT_ENDPOINT` environment variable.
Results remain local and are not lost when submission is unavailable.

## Run tests

From the project root:

```bash
python -m pytest
```

Run tests when you:

- add new worlds
- change commands
- change runner/display behaviour

## Contribute

1. Create or edit code.
2. Run the test suite.
3. Check that student worlds still run.
4. Open a pull request.

See the `docs/` folder for pupil-facing command guides and teacher/developer notes.
