{"id":20523037,"url":"https://github.com/pennlabs/penn-sdk-python","last_synced_at":"2025-07-31T23:06:14.858Z","repository":{"id":10438552,"uuid":"12604160","full_name":"pennlabs/penn-sdk-python","owner":"pennlabs","description":"A Python module for the various services of Penn OpenData. Validated API token required.","archived":false,"fork":false,"pushed_at":"2023-05-22T21:33:29.000Z","size":307,"stargazers_count":30,"open_issues_count":14,"forks_count":5,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-06-14T11:03:09.670Z","etag":null,"topics":["data","opendata","python","university-of-pennsylvania"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pennlabs.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2013-09-04T23:06:34.000Z","updated_at":"2024-06-30T13:27:56.000Z","dependencies_parsed_at":"2023-10-02T00:21:58.558Z","dependency_job_id":null,"html_url":"https://github.com/pennlabs/penn-sdk-python","commit_stats":{"total_commits":376,"total_committers":19,"mean_commits":"19.789473684210527","dds":0.6117021276595744,"last_synced_commit":"fda73d642533e6ad504e04104e2ab162dad0a614"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/pennlabs/penn-sdk-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pennlabs%2Fpenn-sdk-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pennlabs%2Fpenn-sdk-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pennlabs%2Fpenn-sdk-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pennlabs%2Fpenn-sdk-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pennlabs","download_url":"https://codeload.github.com/pennlabs/penn-sdk-python/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pennlabs%2Fpenn-sdk-python/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265424996,"owners_count":23762890,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data","opendata","python","university-of-pennsylvania"],"created_at":"2024-11-15T22:37:41.667Z","updated_at":"2025-07-31T23:06:14.809Z","avatar_url":"https://github.com/pennlabs.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"=======================================\nPennSDK: Wrapper for Multiple Penn APIs\n=======================================\n\n.. image:: https://badge.fury.io/py/PennSDK.png\n    :target: http://badge.fury.io/py/PennSDK\n\n.. image:: https://travis-ci.org/pennlabs/penn-sdk-python.svg\n    :target: https://travis-ci.org/pennlabs/penn-sdk-python\n\nPenn SDK is the Python library for writing code that interfaces with University of Pennsylvania\ndata. It consists of wrappers for various APIs, including the Registrar, Dining, and Directory APIs.\n\n\nGetting an API key\n------------------\n\nTo use these libraries, you must first obtain an API token and password,\nwhich can be done here_. There are separate API tokens and password for each of dining, registrar, news/events/maps, transit, and directory.\n\nThere is also a Laundry API and Calendar, which don't need a key.\nThe StudySpaces API requires a LibCal client ID and secret.\nThe Fitness schedule API requires a key from TeamUp (https://teamup.com/api-keys/request).\n\n\nDocumentation\n-------------\n\nThe full API documentation can be found at\nhttps://esb.isc-seo.upenn.edu/8091/documentation/.\n\nDocumentation for the wrapper can be found at http://penn-sdk.readthedocs.org/\n\nInstallation\n------------\n\nYou can install PennSDK easily using pip\n\n.. code-block::\n\n   $ sudo pip install PennSDK\n\neasy_install also works\n\n.. code-block::\n\n   # sudo easy_install PennSDK\n\nGetting Started\n---------------\nOnce you have an API token and Password, you can use the wrapper as follows.\n\n.. code-block:: python\n\n    from penn import Registrar\n\n    REG_USERNAME = 'MY_REGISTAR_USERNAME'\n    REG_PASSWORD = 'MY_REGISTRAR_PASSWORD'\n\n    r = Registrar(REG_USERNAME, REG_PASSWORD)\n\n    cis120 = r.course('cis', '120')\n\n    # cis120 is a dictionary parsed from the API json\n    my_data = cis120['result_data']\n\nAll of other services (Dining, Directory, Transit, News, Map) follow this same basic format, except for the Laundry, Study Spaces, and Calendar API's, which don't need a username and password passed in at initialization. Refer to the wrapper documentation at http://penn-sdk.readthedocs.org/ for more info.\n\n\nRunning Tests\n-------------\n\nOnce you have an API token and password, you can run the tests by creating a\n``tests/credentials.py`` file with them as constants. Depending on what you\nwant to test, include the following variables. They will be retrieved from your\nenvironment variables by default.\n\n.. code-block:: python\n\n    REG_USERNAME = 'MY_REGISTAR_USERNAME'\n    REG_PASSWORD = 'MY_REGISTAR_PASSWORD'\n\n    DIN_USERNAME = 'MY_DINING_USERNAME'\n    DIN_PASSWORD = 'MY_DINING_PASSWORD'\n\n    DIR_USERNAME = 'MY_DIRECTORY_USERNAME'\n    DIR_PASSWORD = 'MY_DIRECTORY_PASSWORD'\n\n    TRANSIT_USERNAME = 'MY_DIRECTORY_USERNAME'\n    TRANSIT_PASSWORD = 'MY_DIRECTORY_PASSWORD'\n\n    LIBCAL_ID = 'MY_LIBCAL_ID'\n    LIBCAL_SECRET = 'MY_LIBCAL_SECRET'\n\n    FITNESS_TOKEN = 'MY_FITNESS_TOKEN'\n\nThen run ``make test`` to run all tests in your shell.\n\nContributing \u0026 Bug Reporting\n----------------------------\n\nIf you find a bug, please submit it through the `GitHub issues page`_.\n\nPull requests are welcome!\n\n.. _`GitHub issues page`: https://github.com/pennlabs/penn-sdk-python/issues\n.. _`here`: https://provider.www.upenn.edu/computing/da/secure/webloginportal/eforms/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpennlabs%2Fpenn-sdk-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpennlabs%2Fpenn-sdk-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpennlabs%2Fpenn-sdk-python/lists"}