Metadata-Version: 2.4
Name: chawk
Version: 0.1.8
Summary: An API wrapper library for the Blackboard LMS.
Project-URL: Homepage, https://github.com/sugarvoid/chawk
Project-URL: Issues, https://github.com/sugarvoid/chawk/issues
Author-email: sugarvoid <author@example.com>
License-Expression: MIT
License-File: LICENSE
Keywords: api,blackboard,lms,wrapper
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.11
Requires-Dist: certifi==2024.12.14
Requires-Dist: charset-normalizer==3.4.0
Requires-Dist: idna==3.10
Requires-Dist: oauthlib==3.2.2
Requires-Dist: python-dotenv==1.0.1
Requires-Dist: requests-oauthlib==2.0.0
Requires-Dist: requests<3.0,>=2.32
Requires-Dist: urllib3==2.3.0
Description-Content-Type: text/markdown

# Chawk 
A python wrapper of the blackboard api to simplify admin tasks such as managing courses.  

> [!WARNING]  
> This project is a work in progress. 

# Setup 
You will need to create an application to get the needed keys. You can request access to the Blackboard REST APIs through the [Developer Portal](https://developer.blackboard.com/).  


# Example of using the library 
```python

from chawk.blackboard_client import BlackboardClient


base_url = "https://blackboard.xxxx.edu"
client_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxx"

# Create client
client = BlackboardClient(client_id, client_secret, base_url, "example.log")

# Example usage
print(client.user.does_user_exist("00000_0"))
print(client.course.does_course_exist("00000_1"))

client.course.enroll_user(username="wilson1234", course_id="math101213", role="Student")
```

# Current Functions  

## User
```python
    create_user(username: str, f_name: str, l_name: str, email: str, password: str) -> None
    does_user_exist(username: str) -> bool
    update_email(username: str, email: str) -> None
    update_name(username: str, f_name: str, l_name: str) -> None
    update_password(username: str, password: str) -> None
    update_institution_email(username: str, email: str) -> None
    update_availability(username: str, availability: str) -> None
    update_data_source(username: str, data_source_id: str) -> None
    get_course_role(username: str, course_id: str) -> str
    add_institution_roles(username: str, roles: list) -> None
    get_enrollments(username: str) -> list[Course]

```

## Course
```python
    add_child_course(course_id: str, child_id: str) -> None
    enroll_user(username: str, course_id: str, role: str = "Student") -> None
    does_course_exist(course_id: str) -> bool
    remove_user_from_course(username: str, course_id: str) -> None
    get_course_student_list(course_id: str) -> list
    create_empty_course(course_id: str, course_name: str) -> None
    copy_course_exact(master_id: str, copy_id: str) -> None
    delete_course(course_id: str) -> None
    change_user_availability(student_id: str, course_id: str, available: str = "No")
    update_course_title(course_id: str, new_name: str) -> None
    update_course_term(course_id: str, term_id: str) -> None
    update_course_availability(course_id: str, availability: str) -> None
    rename_course(course_id: str, new_name: str) -> None
    get_users_in_course_by_role(course_id: str, role: str = "") -> list[str]
```

## Discussion
```markdown

```

## Gradebook
```python
    update_grade(course_id: str, column_id: str, username: str, new_value: str) -> None
    update_column_due_date(course_id: str, column_id: str, due_date: str) -> None
    create_gradebook_column(course_id: str, column_name: str, description: str, score: int) -> None
```
