Metadata-Version: 2.4
Name: jupyterlab-nitro-ai-judge
Version: 0.1.5
Summary: JupyterLab extension for submitting Nitro AI Judge notebook solutions
Project-URL: Homepage, https://github.com/MihneaTeodorStoica/jupyterlab-nitro-ai-judge
Project-URL: Repository, https://github.com/MihneaTeodorStoica/jupyterlab-nitro-ai-judge
Project-URL: Issues, https://github.com/MihneaTeodorStoica/jupyterlab-nitro-ai-judge/issues
Author: Mihnea
License: MIT License
        
        Copyright (c) 2026 Mihnea
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Keywords: judge,jupyterlab,nitro,notebook
Classifier: Framework :: Jupyter :: JupyterLab
Classifier: Framework :: Jupyter :: JupyterLab :: 4
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Requires-Dist: jupyter-server<3,>=2.0.0
Requires-Dist: jupyterlab<5,>=4.0.0
Requires-Dist: nitro-ai-judge-cli>=0.1.2
Description-Content-Type: text/markdown

# JupyterLab Nitro AI Judge

JupyterLab extension that adds a notebook toolbar button, `Submit to Nitro AI Judge`, and guides the user through login, contest selection, task selection, CSV submission, source attachment, and feedback review.

## Features

- notebook toolbar button for direct submission flow
- login prompt backed by `nitro-ai-judge-cli`
- contest and task loading from Nitro AI Judge
- CSV file picker rooted at the current notebook directory
- source selection from either a file or the current notebook exported as Python
- automatic polling until scoring feedback is available
- results view with total score plus per-subtask score and metric values

## Requirements

- Python 3.10+
- JupyterLab 4.x
- `nitro-ai-judge-cli` available in the same Python environment as JupyterLab

## Install

```bash
python -m pip install jupyterlab-nitro-ai-judge
```

For local development in this repo:

```bash
npm install
python -m pip install -U pip build hatchling hatch-jupyter-builder jupyterlab
python -m pip install -e .
```

## Development

Build the frontend bundle:

```bash
python -m pip install -U jupyterlab
npm run build:prod
```

Build the Python package:

```bash
python -m build
```

## Usage

1. Open a notebook in JupyterLab.
2. Click `Submit to Nitro AI Judge` in the notebook toolbar.
3. Log in if prompted.
4. Select the contest and task.
5. Pick the output CSV file.
6. Choose either a source file or the current notebook as the source attachment.
7. Submit and wait for feedback.
8. Review the total score and per-subtask metrics in the Nitro panel.

## Publishing

Before publishing, replace the placeholder GitHub URLs in `package.json` and `pyproject.toml`.

PyPI release flow:

```bash
python -m pip install -U build twine
python -m build
python -m twine check dist/*
git tag v0.1.5
git push origin main --tags
```

The included GitHub workflows build on pushes and publish to PyPI on version tags.
