Skip to main content

Python package for querying Morgan State University course data.

Project description

Morgan Course Data API

PyPI Downloads Morgan State University

FALL_2024_Refresh_Date WINTER_2025_Refresh_Date SPRING_2025_Refresh_Date

A Python package for interacting with Morgan State University's course data. This package enables developers to query courses, retrieve instructor information, and perform various operations on course data efficiently.

Note: Data is updated at the beginning of each semester.


Features

  • Get All Courses: Fetch all courses and their sections.
  • Get Paginated Courses: Retrieve courses with pagination using cursors for better performance.
  • Get Course by Signature: Retrieve a specific course using its unique signature.
  • Get Courses by Subject Abbreviation: Retrieve all courses for a specific subject.
  • Get Course Sections by Instructor: Fetch all sections taught by a specific instructor.
  • Get All Instructors: List all instructors and their associated courses.
  • Get Subject to Abbreviation Mappings: Retrieve a dictionary mapping subjects to abbreviations.

Installation

To install this package, simply install the package from PyPi:

pip install morgan_course_data

Usage

Initialize the Data Handler

Start by creating an instance of the MorganCourseData class, specifying one of the allowed terms (FALL_2024, WINTER_MINIMESTER_2025, SPRING_2025):

from morgan_course_data.api import MorganCourseData

morgan_data = MorganCourseData(term="FALL_2024")

Get All Courses

Retrieve all courses for the specified term.

Warning: This method can return over 1,000 elements. Use get_courses_paginated() for production use.

Returns:

  • courses: A list of all Course objects available in the specified term.

Example Usage:

fall_courses = morgan_data.get_all_courses() # List[Course]

for course in fall_courses:
    print(course)

Get Paginated Courses

Fetch courses in a paginated manner using cursor and page_size. Pagination ensures efficient fetching of large datasets.

Parameters:

  • cursor: Reference to last retrieved course, used for pagination (optional).
  • page_size: The number of items per page (default: 20, max: 50).

Returns:

Example Usage:

# Fetch the first page
paginated_courses = morgan_data.get_courses_paginated(page_size=10)

for course in paginated_courses["courses"]:
    print(course)

# Retrieve pagination metadata
pagination_info = paginated_courses["pagination"]
print(f"Next Cursor: {pagination_info['next_cursor']}")
print(f"Page Size: {pagination_info['page_size']}")
print(f"Has More: {pagination_info['has_more']}")

# Fetch the next page using the cursor
if pagination_info['has_more']:
    next_cursor = pagination_info["next_cursor"]
    next_page = morgan_data.get_courses_paginated(cursor=next_cursor, page_size=10)

    for course in next_page["courses"]:
        print(course)

Get Courses by Subject Abbreviation

Retrieve all courses under a specific subject (e.g., COSC for Computer Science):

Returns:

  • courses: A list of all Course objects with the specified subject abbreviation

Example Usage

cosc_courses = morgan_data.get_courses_by_subject_abbreviation("COSC") # List[Course]

for course in cosc_courses:
    print(course)

Get Course by Signature

Retrieve a specific course using its unique signature:

Returns:

  • course: A Course object with the specified course signature

Example Usage

course = morgan_data.get_course_by_signature("COSC 111") # Course

if course:
    print(course)
else:
    print("Course not found.")

Get Course Sections by Instructor

Retrieve all sections taught by a specific instructor. Format the instructor name as 'LastName, FirstName':

Returns:

  • course_sections: A list of all CourseSection objects with the specified instructor

Example Usage

mack_sections = morgan_data.get_course_sections_by_instructor("Mack, Naja")

for section in mack_sections: # List[CourseSection]
    print(section)

Get All Instructors

Fetch a list of all instructors and the courses they teach:

Returns:

Example Usage

instructors = morgan_data.get_all_instructors() # List[Instructor]

for instructor in instructors:
    print(f'{instructor.name} teaches {instructor.course_signatures}')

Get Subject to Abbreviation Mappings

Retrieve a dictionary of subjects and their abbreviations:

Returns:

  • dict: A dictionary/map of subjects and their abbreviation. Dict[key=subject: str, value=abbreviation: str]

Example Usage

subject_mappings = morgan_data.get_subject_abbreviation_map() # Dict[subject: str, abbreviation: str]

for subject, abbreviation in subject_mappings.items():
    print(f"{subject}: {abbreviation}")

Data Models

Course

Represents a course with its metadata and sections.

class Course:
    signature: str
    subject_abbreviation: str
    subject: str
    credit_hours: int
    name: str
    number: str
    full_name: str
    prerequisites: dict
    sections: List["CourseSection"]

CourseSection

Represents an individual section of a course.

class CourseSection:
    title: str
    section: str
    type: str
    crn: int
    instructional_method: str
    instructor: str
    enrollment_actual: str
    enrollment_max: str
    enrollment_available: str
    meetings: List["Meeting"]

Meeting

Represents a scheduled meeting for a course section.

class Meeting:
    start_time: str
    end_time: str
    days: List[str]
    building: str
    campus: str
    room: str
    start_date: str
    end_date: str

Instructor

Represents an instructor and the courses they teach.

class Instructor:
    name: str
    course_signatures: list[str]

Response Objects

GetCoursesPaginatedResponse

Represents a response object to the get_courses_pagination method.

class PaginationMetadata(TypedDict):
    next_cursor: Optional[str]  # The cursor for fetching the next page of results
    page_size: int              # The number of courses per page
    has_more: bool              # Indicates if more pages are available

class GetCoursesPaginatedResponse(TypedDict):
    courses: List['Course']      # List of Course objects
    pagination: PaginationMetadata  # Metadata for pagination

Contact

For any questions, suggestions, or issues, please contact: cltandjong@gmail.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

morgan_course_data-0.1.1.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

morgan_course_data-0.1.1-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file morgan_course_data-0.1.1.tar.gz.

File metadata

  • Download URL: morgan_course_data-0.1.1.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.12

File hashes

Hashes for morgan_course_data-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a078574219045965827f7a304b718731e17cc43175cab8b466d8b571ed7f6d2e
MD5 bd6a18cd7d0bcbf66902130cc598f12d
BLAKE2b-256 d32ecf02569f628434b89d3bf6a9ef6e01aff07b6d70afd50effca7e8fc8bedd

See more details on using hashes here.

File details

Details for the file morgan_course_data-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for morgan_course_data-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 74a77a5cc9b7b34b4df78fdf0082a04fa1d093637ad63b5bd96009ac9df0a8b4
MD5 ede19135f912cf9eff4a3deb4113ac62
BLAKE2b-256 002fb6d9b75c88d48fd820be14043d837e5347ae5ac9ec62a451a015494be53f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page