Metadata-Version: 2.1
Name: codegrade
Version: 15.2.0
Summary: A client library for accessing CodeGrade
License: AGPL-3.0-only OR BSD-3-Clause-Clear
Requires-Python: >=3.6.1,<4.0
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: dataclasses (>=0.8,<0.9); python_version >= "3.6" and python_version < "3.7"
Requires-Dist: httpx (>=0.19.0,<1.0.0)
Requires-Dist: python-dateutil (>=2.8.1,<3.0.0)
Requires-Dist: structlog (>=20.1.0,<21.0.0)
Requires-Dist: typing-extensions (>=3.7.4.3,<4.0.0.0)
Requires-Dist: validate-email (>=1.3,<2.0)
Project-URL: Documentation, https://python.api.codegrade.com
Description-Content-Type: text/markdown

# CodeGrade API

This library makes it easier to use the CodeGrade API. Its API allows you to
automate your usage of CodeGrade. We are currently still busy documenting the
entire API, but everything that is possible in the UI of CodeGrade is also
possible through the API.
## Installation
You can install the library through [pypi](https://pypi.org/), simply run
`python3 -m pip install codegrade`. If you want to get a dev version with support
for the latest features, simply email [support@codegrade.com](mailto:support@codegrade.com)
and we'll provide you with a dev version.
## Usage
First, create a client:

```python
import codegrade

# Don't store your password in your code!
with codegrade.login(
    username='my-username',
    password=os.getenv('CG_PASSWORD'),
    tenant='My University',
) as client:
    pass

# Or supply information interactively.
with codegrade.login_from_cli() as client:
    pass
```

Now call your endpoint and use your models:

```python
from codegrade.models import PatchCourseData

courses = client.course.get_all()
for course in courses:
    client.course.patch(
        PatchCourseData(name=course.name + ' (NEW)'),
        course_id=course.id,
    )

# Or, simply use dictionaries.
for course in courses:
    client.course.patch(
        {"name": course.name + ' (NEW)'},
        course_id=course.id,
    )
```

For the complete documentation go to
https://python.api.codegrade.com.
## Backwards compatibility
CodeGrade is constantly upgrading its API, but we try to minimize backwards
incompatible changes. We'll announce every backwards incompatible change in the
[changelog](http://help.codegrade.com/changelog). A new version of the API
client is released with every release of CodeGrade, which is approximately every
month. To upgrade simply run `pip install --upgrade codegrade`.
## Supported python versions
We support python 3.6 and above, `pypy` is currently not tested but should work
just fine.
## License
The library is licensed under AGPL-3.0-only or BSD-3-Clause-Clear.
