Metadata-Version: 2.4
Name: canvy
Version: 0.1.0
Summary: Sync files from Canvas courses
Author-email: "James K." <jameskowal10@gmail.com>
License-Expression: MIT
Requires-Python: ==3.12.*
Requires-Dist: agno>=1.3.1
Requires-Dist: canvasapi>=3.3.0
Requires-Dist: duckduckgo-search>=8.0.1
Requires-Dist: hatch>=1.14.1
Requires-Dist: ollama>=0.4.8
Requires-Dist: openai>=1.75.0
Requires-Dist: platformdirs>=4.3.7
Requires-Dist: pydantic>=2.11.3
Requires-Dist: pypdf>=5.4.0
Requires-Dist: pytest-cov>=6.1.1
Requires-Dist: pytest>=8.3.5
Requires-Dist: qdrant-client>=1.13.3
Requires-Dist: rich>=14.0.0
Requires-Dist: textual-dev>=1.7.0
Requires-Dist: textual>=3.1.1
Requires-Dist: toml>=0.10.2
Requires-Dist: typer>=0.15.2
Requires-Dist: typst>=0.13.2
Description-Content-Type: text/markdown

# Canvy

<!--toc:start-->
- [Canvy](#canvy)
  - [Features](#features)
  - [Usage](#usage)
  - [Installation](#installation)
  - [Contribution](#contribution)
<!--toc:end-->

All-in-one manager for _educational resources_ hosted on **Canvas**.

## Features

- Download all resources (e.g. files, text, etc.)
- Manage courses and accounts
- Synthesize new resources (e.g. problem sheets) using LLMs

## Usage

```sh
$ canvy download
Downloading all files...
Finished in 5.0s.
$ canvy courses
(10848) Data Structures & Algorithms
(91842) Software Engineering
(59283) Functional Programming
$ canvy download 10848
Downloading all files from Data Structures & Algorithms
Finished in 2.0s.
$ canvy teacher
>>> read the mle file and tell me about the urn example
INFO Reading: W2
┏━ Message          ━┓
                                                              
  read the mle file and tell me about the urn example         
                                                              
┏━ Tool Calls       ━┓
                                                              
  • canvas_files()                                            
  • retrieve_knowledge(pdf_rel_path=LI Artificial Intellig    
  Materials/W2.1-MLE.pdf)                                     
                                                              
┏━ Response (12.8s) ━┓
                                                              
  The urn example in the "W2.1-MLE.pdf" file is a classic     
                                                              
  Here's the essence of the urn example:                      
                                                              
  - There is an urn with two types of balls: red balls ...    
  - The proportion of red balls in the urn is unknown, ...    
  ...                                                         
                                                              
  The example demonstrates how MLE uses observed data to i    
  simple and concrete scenario. If you want, I can provide    
                                                              
INFO Loading knowledge base
INFO Loaded 24 documents to knowledge base
>>>
```

## Installation

Arch (not yet):
``yay -S python-canvy``

Basically anything else:

1. Install [uv](https://github.com/astral-sh/uv)
2. ``uv tool install canvy``

## Contribution

yes
