Git Product home page Git Product logo

ncsu_courses's Introduction

NCSU Courses

A Python library for getting data about NCSU's course offerings. Contains functionality for retrieving historical and current courses and their sections, including instructor, meeting information, seats, and more.

This library uses the same API that this website does.

Courses

Use ncsu_courses.courses.get_courses(subject, term) to get all courses for a given subject during the given term. A course has data such as a curriculum and code, a description, title, etc.

Sections

A section of a course is a specific instance of the course being offered during a certain term. A section contains information such as instructor, meeting days and times, meeting location, seats, etc. Use ncsu_courses.courses.get_sections(subject, term) to get all sections for all classes of the given subject during the given term.

Subjects

Subjects represent broad areas of study. Each course's name begins with the letters of the subject that it belongs to (ex. CSC 111 is a Computer Science course because CSC represents the Computer Science subject). The ncsu_courses.subjects.get_all_subjects(term) function returns a list of all subjects that exist during the current term.

Terms

A term is identified by a year and a session (Fall, Spring, Summer 1, or Summer 2). Use ncsu_courses.term.Term to represent a specific term. Terms are passed to the API as integers representing a combination of year and session, and the Term object handles this internally.

ncsu_courses's People

Contributors

brendon-hablutzel avatar

Watchers

 avatar

ncsu_courses's Issues

Add CI workflow

Add CI workflows for:

  • testing using pytest
  • deploying to PyPI

note: use poetry

Add tests

Add tests using pytest. Create tests primarily for evaluating the html parsing functionality. Some tests may be added that call the live API, but these should be limited/optional.

Improve versioning

Improve the versioning by moving version to a separate file (VERSION), reading from that in __init__.py and setting __version__ to it, and then get the version dynamically in pyproject.toml. Also, check for version changes in GitHu actions.

Tasks

  • Move version to separate file and read from that in init.py
  • Read version in pyproject.toml
  • Add a check to the GitHub Actions workflow

Method, object, and module restructuring

Improve module structure. This includes:

  • isolating methods that interact with the API--make the API endpoints methods of a class?
  • isolating methods that deal with parsing--put into a class?
  • making all but a few methods private (users should only be able to call a few of the most high-level functions)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.