{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# Oneroster Python Client\n\n## This library is in beta, and changes often. Use at your own risk.\n\nThis library facilitates easy access to the user database from Clever or Classlink. \nThe connectors provide single-method calls that will return users (students, teachers or both) from the provider of your choice,\nbased on class, course, or school membership without the need for paging and response handling. Additional documentation to come.\n\nFor the time being, this library **only returns users** for differente classes, courses and schools - it was designed for this purpose as integrated into a sync process. Additional options for fetching other data types will hopefully come down the line.\n\n- https://developer.classlink.com/\n- https://dev.clever.com/v2.1/reference\n- https://www.imsglobal.org/oneroster-v11-final-specification\n\nFor details on the development of this library, visit https://github.com/vossenv/oneroster-python\n\nContact Danimae Vossen (vossen.dm@gmail.com) for inquiries\n\n## What is Oneroster?\nOneroster is not actually an application, but a specification. Oneroster simplifies the management of rostering for education by standardizing the format for REST and CSV data handling. This makes it easier for service applications (such as Adobe) to integrate with SIS (student information systems) platforms that comply with the standard. It is in a school's best interest to choose Oneroster standardized platforms, because it greatly simplifies the process of maintaining a synchronous state between their rostering breakdown and the products their users need access to. An in-depth description of the standard can be found on the Oneroster homepage (IMS Globlal):\n\n[https://www.imsglobal.org/activity/onerosterlis](https://www.imsglobal.org/activity/onerosterlis \"https://www.imsglobal.org/activity/onerosterlis\")\n\nAccording to IMS, the big picture features of the standard include the following:\n\n- Provision key roster related data including student, course and related enrollment information between various platforms such as a student information system (SIS) and a learning management system (LMS).\n- Flexible implementation options to align with an institution\u00e2\u20ac\u2122s needs and capabilities, supporting simple spreadsheet-style (CSV) exchanges as well as system-to-system exchanges using REST API\u00e2\u20ac\u2122s\n- Improves data exchange among multiple systems with roster and gradebook information, thus eliminating problems before they happen\n- Transmit scored results between applications, such as student scores from the LMS back to the SIS.\n\nThe Oneroster API is open source by definition, which means that all information regarding endpoints and data models is freely available in the actual specification. The specification provides detailed guidance as to API structure. Since all the major SIS players adopt the standard and provide similar access to it, the Oneroster connector enables flexibility to do rostering based provisioning - a highly desirable feature! Adobe works with a great deal of educational organizations. Most, if not all of these organizations already leverage SIS that include the Oneroster API/CSV implementation. Some examples of these SIS are:\n\n- Classlink\n- Clever\n- Kivuto\n- Infinite Campus\n- Powerschool\n\n\n# Quick Start\n\n*Note: a full version of this code can be found [here](https://github.com/vossenv/oneroster-quickstart \"here\")\n\n`pip install oneroster`\n\nBegin by installing the oneroster dependency as above (home is [here](https://pypi.org/project/oneroster/ \"here\")). The constructor takes more than 3 arguments, but 3 is all you need to instantiate it. These arguments are:\n\n1. host name - this should come from your SIS dashboard (classlink here). It may look different for different providers\n2. client_id - also from SIS dashboard\n3. client_secret - also from SIS dashboard\n\nImport and instantiate the connector (Classlink) as shown.\n\n```python\nimport oneroster\nfrom pprint import pprint\t\t\t\t\t\t# optional\n\nconnector = oneroster.ClasslinkConnector(\n host=\"https://example.oneroster.com/ims/oneroster/v1p1/\",\n client_id='your_client_id',\n client_secret='your_client_secret',\n)\n```\nFor a first try, you can call **get_users**, giving a single argument: 'students'. This will return a list of all the students in the system.\n```python\nuser_list = connector.get_users(user_filter='students')\n\nprint(str(len(user_list)) + \" students in total\")\npprint(user_list[0])\n```\n\nThe connector queries are made up of 3 main arguments:\n\n user_filter - this 'filter's the kind of user requested. The options are: students, teachers, and users. students and teachers work for any query, but users is only available when getting a full list (e.g.:\n /ims/oneroster/v1p1/users)\n\ngroup_filter - the word 'group filter' is chosen to represent how users might be grouped. This can be any of: classes, courses, schools. This is equivalent of making an api call like:\n/ims/oneroster/v1p1/classes/class_id/{user_filter}\n\ngroup_name - the 'group name' indicates which class, course or school we want to target. This might be the name or id of a class. The final query with the group and user filters looks like this: /ims/oneroster/v1p1/{group_filter}/{group_name}/{user_filter}\n\nFor example:\n/ims/oneroster/v1p1/classes/31763/students\n\nThe following snippets should help to illustrate this. Consider the simple case of getting all students for classes named ELA (6A ELA):\n\n```python\nclass_name = \"ELA 6 (6A ELA)\"\nela_users = connector.get_users(user_filter='students',\n group_filter='classes',\n group_name=class_name)\n\nprint(str(len(ela_users)) + \" users found for ELA 6\")\n```\n\nAlternatively, we can query the same class using it's sourcedId. This second case may return less results, because an id corresponds to a specific section, whereas the classname gets all sections sharing that name.\n\n```python\nclass_id = \"31763\"\nela_users = connector.get_users(user_filter='students',\n group_filter='classes',\n group_name=class_id)\n\nprint(str(len(ela_users)) + \" users found for ELA 6 (1 section)\")\n```\n\nWe can expand the option of \"match groups by\" by setting the connector option. The default is ['sourcedId', 'name', 'title'], which means that the group name you enter will be compared against these three fields for matches. This means you can make queries using any of those 3 fields. For example, we can query for \"Classlink HS\" and school with id 7 (the middle school), and both will return results. You are free to set the match_groups_by field to any of the fields in your target object (a class, course, or school)\n\n```python\nhschool_users = connector.get_users(user_filter='students',\n group_filter='schools',\n group_name='Classlink HS')\n\nmschool_users = connector.get_users(user_filter='students',\n group_filter='schools',\n group_name='7')\n\nprint(str(len(hschool_users)) + \" high school students returned\")\nprint(str(len(mschool_users)) + \" middle school students returned\")\n```\n\nYou can change the matcher by setting the class level property or by passing it with get_users. As an example, let's say we want to get the number of students with classes in room 302. We can look at the available JSON properties from the api standard, and see that 'location' represents a room. We can pass this expicitly in the call as shown. Note that for the moment, only *string* type matchers are allowed. The 'grades' field is represented by a list like ['11'] - and so it is an invalid matcher. Extended matching functionality will come in a future release.\n\n```python\nconnector.match_groups_by = ['sourcedId', 'name', 'title', 'location']\nor\nconnector.match_groups_by = 'location'\nor\nr302_users = connector.get_users(user_filter='students',\n group_filter='classes',\n group_name='302',\n match_on='location')\n\nprint(str(len(r302_users)) + \" students with classes in room 302\")\n\n```\nWhen run, the above snippets result in the following output:\n\n```\n139 students in total. First result:\n\n{'agents': [],\n 'dateLastModified': '2019-03-01T18:14:45.000Z',\n 'email': 'billy.flores@classlink.k12.nj.us',\n 'enabledUser': 'true',\n 'familyName': 'FLORES',\n 'givenName': 'BILLY',\n 'grades': ['11'],\n 'identifier': '17580',\n 'middleName': 'DASEAN',\n 'orgs': [{'href': 'https://adobe-ca-v2.oneroster.com/ims/oneroster/v1p1/orgs/2',\n 'sourcedId': '2',\n 'type': 'org'}],\n 'password': '',\n 'phone': '',\n 'role': 'student',\n 'sms': '',\n 'sourcedId': '18125',\n 'status': 'active',\n 'userIds': [{'identifier': '18125', 'type': 'FED'}],\n 'username': 'billy.flores'}\n\n7 users found for ELA 6\n3 users found for ELA 6 (1 section)\n38 high school students returned\n54 middle school students returned\n13 students with classes in room 302\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vossenv/oneroster-python", "keywords": "", "license": "MIT", "maintainer": "Danimae Vossen", "maintainer_email": "vossen.dm@gmail.com", "name": "oneroster", "package_url": "https://pypi.org/project/oneroster/", "platform": "", "project_url": "https://pypi.org/project/oneroster/", "project_urls": { "Homepage": "https://github.com/vossenv/oneroster-python" }, "release_url": "https://pypi.org/project/oneroster/0.0.15/", "requires_dist": [ "six", "requests" ], "requires_python": "", "summary": "Simple Oneroster client for user management", "version": "0.0.15" }, "last_serial": 5663788, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "634de5c9665f2b390cecb258612faf85", "sha256": "d75ef42e66359c0e97d36430dd557cdea1c1248b510dc1dd355fa8346b4059a7" }, "downloads": -1, "filename": "oneroster-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "634de5c9665f2b390cecb258612faf85", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8421, "upload_time": "2019-06-22T03:25:45", "url": "https://files.pythonhosted.org/packages/c5/6e/b6c9b2207439732f64c90b8c9eed86671fd4ffd7506b5236821e8239a942/oneroster-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86e6ce3cf127eaf135d69d9cde602e5e", "sha256": "6da61fa12f29a1674fa18629cbd1c7bc40e2cd358862b10d979c4dae7f76fdfb" }, "downloads": -1, "filename": "oneroster-0.0.1.tar.gz", "has_sig": false, "md5_digest": "86e6ce3cf127eaf135d69d9cde602e5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6264, "upload_time": "2019-06-22T03:25:46", "url": "https://files.pythonhosted.org/packages/05/28/3db8fd6874f53673b7021b22e075f895ecaf57c2dc08a4be04998c0ca24d/oneroster-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "fedce71c554e966e81f4fbc3dac7b214", "sha256": "a580116bcfa0bc3dcc64b27ab5b6256a171a19a9e86febfc022446ddf6f845a0" }, "downloads": -1, "filename": "oneroster-0.0.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fedce71c554e966e81f4fbc3dac7b214", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16653, "upload_time": "2019-08-07T03:43:07", "url": "https://files.pythonhosted.org/packages/91/5c/28a4ed89a4d10e4bcb5f996404d486fa9ccbd06c7e19717783270511eb66/oneroster-0.0.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf947d97576ad9963fac8f47a8ec8d73", "sha256": "d2f69646d89432127f7e8041e14b257f40a7a2feca1a0dd38472ba913c26ac73" }, "downloads": -1, "filename": "oneroster-0.0.10.tar.gz", "has_sig": false, "md5_digest": "cf947d97576ad9963fac8f47a8ec8d73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13145, "upload_time": "2019-08-07T03:43:08", "url": "https://files.pythonhosted.org/packages/56/d0/fccd3639ffd5962b6422837a52a9cbdf1846a434bab67ee08f291e0d28ce/oneroster-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "9b82a9e2a29e0bf41fd555769f320504", "sha256": "ac3db4f4eef7fb6586dec4f0e2ce8460eb5e4ab84a4b3aa5fe452febb568bb55" }, "downloads": -1, "filename": "oneroster-0.0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9b82a9e2a29e0bf41fd555769f320504", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17563, "upload_time": "2019-08-07T04:45:13", "url": "https://files.pythonhosted.org/packages/88/e8/ef0d2a43a8755505892cb0d709da2834c12590933bd22a2c613c0025e9ff/oneroster-0.0.11-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32526dd24252410b2060f09e66711d87", "sha256": "9935772a619c2a57cc4c19f48155846c4b9e91bf9044397f5c169d67afe8ec92" }, "downloads": -1, "filename": "oneroster-0.0.11.tar.gz", "has_sig": false, "md5_digest": "32526dd24252410b2060f09e66711d87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14209, "upload_time": "2019-08-07T04:45:15", "url": "https://files.pythonhosted.org/packages/4a/37/85c4ccd4866bd2a0b31cddf515e3c2a68c59e190f2cff6a0b58d8bae576a/oneroster-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "51512a5ea31b82fefb70259ede5a490f", "sha256": "06d278c88598eb73e1957fd84eb32bd8b7da98fec86e5d2c7cf0d8731c53abb7" }, "downloads": -1, "filename": "oneroster-0.0.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "51512a5ea31b82fefb70259ede5a490f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17556, "upload_time": "2019-08-10T06:03:42", "url": "https://files.pythonhosted.org/packages/3a/80/7fe48428ccb3d415cbf822cb97595322facc4a4a18e2c640c31ca79597b5/oneroster-0.0.12-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba547e0c7639cb316f684b34f43a87b8", "sha256": "e31984877b61cb5d5a1d1d1352bb1abbdc00682b650567e751c7f91c2ebc8124" }, "downloads": -1, "filename": "oneroster-0.0.12.tar.gz", "has_sig": false, "md5_digest": "ba547e0c7639cb316f684b34f43a87b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14204, "upload_time": "2019-08-10T06:03:44", "url": "https://files.pythonhosted.org/packages/68/14/35d7a8f60a122e378b4546987cbfb252befd80eb157936b930c065c1d759/oneroster-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "4e60494c42554e3d476e44475856e066", "sha256": "9bc51cc6b38ceb6a1a1748a8694f1c70d1be603d3453fb8c4a72bbc923479392" }, "downloads": -1, "filename": "oneroster-0.0.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4e60494c42554e3d476e44475856e066", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17558, "upload_time": "2019-08-10T06:07:08", "url": "https://files.pythonhosted.org/packages/2c/51/bd240627c817ac83f38b06f5c7e66e8ba2871765f5dbf7fa7db4e834538b/oneroster-0.0.13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b50fe5249cd9dd23c3928e515412087e", "sha256": "e919ab119b21c8b463cf978e1635fc40927fc76f4d426a81a3f60e80f7b845af" }, "downloads": -1, "filename": "oneroster-0.0.13.tar.gz", "has_sig": false, "md5_digest": "b50fe5249cd9dd23c3928e515412087e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14197, "upload_time": "2019-08-10T06:07:09", "url": "https://files.pythonhosted.org/packages/78/ab/4df7bbb3b94a46109e55c03378d42380396e46d9e1486d5c0e805453065f/oneroster-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "8f6a2bafbaba13338ea145b565bc9601", "sha256": "5b63d7995095f25686b22623b52f4a7d7d4f2e31d40e952f14141df049a31010" }, "downloads": -1, "filename": "oneroster-0.0.14-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8f6a2bafbaba13338ea145b565bc9601", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17553, "upload_time": "2019-08-10T06:57:39", "url": "https://files.pythonhosted.org/packages/8d/1b/b807fabec20d036c9e0b9c7fb3f4106e62f0ece574fcf51d9e6cdefe9c38/oneroster-0.0.14-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19cdd60bf28a4f75fc087eda70b03467", "sha256": "877b6f120b9ef585ac43d2bae22fd4d3d20311fef63bfffa9d8905ea96968c5b" }, "downloads": -1, "filename": "oneroster-0.0.14.tar.gz", "has_sig": false, "md5_digest": "19cdd60bf28a4f75fc087eda70b03467", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14199, "upload_time": "2019-08-10T06:57:41", "url": "https://files.pythonhosted.org/packages/0f/ec/1ee34883420c466e611b0aafa3a4cb90ab438fa2f5c55e53e0e66e5c66ff/oneroster-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "13911219a8ab3a7cca65aa977186e527", "sha256": "28b3c6ec242cec1562e08d1951c450677f96cb284a70c3bf296ecb49748d8be0" }, "downloads": -1, "filename": "oneroster-0.0.15-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "13911219a8ab3a7cca65aa977186e527", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17549, "upload_time": "2019-08-12T02:54:48", "url": "https://files.pythonhosted.org/packages/28/e2/487d33b08779ad5ca6a5b12cfcd8878e79a31d935073293fa636e85a4263/oneroster-0.0.15-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb57746f84f631bdbcd48c45bd7f8879", "sha256": "0e64c6e270f9069bdb30cc047a7f2935bcc5484fce1314553f59a3b6f09ac43a" }, "downloads": -1, "filename": "oneroster-0.0.15.tar.gz", "has_sig": false, "md5_digest": "fb57746f84f631bdbcd48c45bd7f8879", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14197, "upload_time": "2019-08-12T02:54:49", "url": "https://files.pythonhosted.org/packages/77/25/425065dcf1f992bd04314de3045484207ef97dbcd8fbb5d957225c43f220/oneroster-0.0.15.tar.gz" } ], "0.0.1rc1": [ { "comment_text": "", "digests": { "md5": "9b43572127bc98d97c8a4c1952388bba", "sha256": "70ac41912ff8420af8aff502e3b90dc13682f9b0086834b66cd2deea88979c1c" }, "downloads": -1, "filename": "oneroster-0.0.1rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9b43572127bc98d97c8a4c1952388bba", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8463, "upload_time": "2019-06-22T02:49:15", "url": "https://files.pythonhosted.org/packages/24/ba/72922efa3e547fbee04777eb48b1f9731421302888ab528b6daa4f1b2e24/oneroster-0.0.1rc1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f220b0945112abd8e90cbffe49d7dde", "sha256": "6c833ee18be442f38c63884375853439105629dbf77de1bd48ba733f949cce1d" }, "downloads": -1, "filename": "oneroster-0.0.1rc1.tar.gz", "has_sig": false, "md5_digest": "9f220b0945112abd8e90cbffe49d7dde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6281, "upload_time": "2019-06-22T02:49:17", "url": "https://files.pythonhosted.org/packages/78/60/dd08f188211e2eacc2657d2a3141cc02b38b4543e2bc6db878024921b19e/oneroster-0.0.1rc1.tar.gz" } ], "0.0.1rc3": [ { "comment_text": "", "digests": { "md5": "e66e22be357bde20d99638d5c5b0ff16", "sha256": "48144d84b2e34f1f8c13a0926f75f368af12277330fe679fac427ce3fd00145f" }, "downloads": -1, "filename": "oneroster-0.0.1rc3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e66e22be357bde20d99638d5c5b0ff16", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8456, "upload_time": "2019-06-22T03:16:58", "url": "https://files.pythonhosted.org/packages/a2/a2/c2d6f9288fa36005bb53b5071942d708054adf87875055ed7ef8ab0c0d3a/oneroster-0.0.1rc3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a0e5689a958a2a477deb93c442e3416d", "sha256": "602537fd244c6c2dd76b2201ec087f99d586c65496a9ba81b71fa68786efd3d3" }, "downloads": -1, "filename": "oneroster-0.0.1rc3.tar.gz", "has_sig": false, "md5_digest": "a0e5689a958a2a477deb93c442e3416d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6274, "upload_time": "2019-06-22T03:16:59", "url": "https://files.pythonhosted.org/packages/ef/2d/c32b9f0fba171ea7b79ba9c848551dbf332c8f9d4e297826479d949af47e/oneroster-0.0.1rc3.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "0235225a43305a1053fdc933bbb596aa", "sha256": "86b2b2f7e3766a9b314a8402b4a5b74517286a4880cc37d0d103b422d83e9a78" }, "downloads": -1, "filename": "oneroster-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0235225a43305a1053fdc933bbb596aa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14098, "upload_time": "2019-06-26T15:54:18", "url": "https://files.pythonhosted.org/packages/88/0e/6b7b347f69e7bec05803eb0cea1742113b8d5054806c35270748bc01b97f/oneroster-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "029a36dfc65fa7716ad5a9348f5db9a8", "sha256": "43925f49bb7703135df14a7cd3e7c8702dc235f090e2b8d6d4f0afa81974cdbb" }, "downloads": -1, "filename": "oneroster-0.0.2.tar.gz", "has_sig": false, "md5_digest": "029a36dfc65fa7716ad5a9348f5db9a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10058, "upload_time": "2019-06-26T15:54:19", "url": "https://files.pythonhosted.org/packages/34/80/a2b4a2d06b1f83399a604efc5a7a3fa3eb63e3996074dc1ce342f7e3f8b2/oneroster-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "5ecb596cfbbc89cd78e72c8475b64de7", "sha256": "2e5cfb64b638be63e695578e2c07a758d213d413e34346616bac69637553ff44" }, "downloads": -1, "filename": "oneroster-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5ecb596cfbbc89cd78e72c8475b64de7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14087, "upload_time": "2019-07-02T19:10:03", "url": "https://files.pythonhosted.org/packages/1c/65/392697494fc5694f5cc99558969ec76a49b7e64fcb9fd8dff10509aa1256/oneroster-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea65c9a4d95d6aee1e8a0c9c0877246e", "sha256": "3ceaded0d23457eaf622414d4e2f717fceb43a2145cb5107c36ae0e328b73a84" }, "downloads": -1, "filename": "oneroster-0.0.3.tar.gz", "has_sig": false, "md5_digest": "ea65c9a4d95d6aee1e8a0c9c0877246e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10059, "upload_time": "2019-07-02T19:10:05", "url": "https://files.pythonhosted.org/packages/a2/0e/09d17618bc6005f4daea6c88abe62fb156d543ed92ae3230de6ffc57332c/oneroster-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "29ccebf20e4969f94284b57186a1a674", "sha256": "ca060d008a80c6f002067c240eb6839cbc78716c531961e5592d6405f2f370ba" }, "downloads": -1, "filename": "oneroster-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "29ccebf20e4969f94284b57186a1a674", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13367, "upload_time": "2019-07-17T20:33:30", "url": "https://files.pythonhosted.org/packages/e7/54/a42562d3d4e6ca6167e55c778a0ce051e397793d6584535c989c2573a437/oneroster-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5088329f431ca3dc27f2e069da42df42", "sha256": "f948efdb147287e0e7b2dbee3e0647a49a932e81416330e8af88504200db617b" }, "downloads": -1, "filename": "oneroster-0.0.4.tar.gz", "has_sig": false, "md5_digest": "5088329f431ca3dc27f2e069da42df42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9812, "upload_time": "2019-07-17T20:33:32", "url": "https://files.pythonhosted.org/packages/fd/a4/ad60df1e29ef1a7774f6ebe310a03254a9de9ced6395e60118064bc315c4/oneroster-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "9f2c1a7a7408729e606d538935a08bfa", "sha256": "ae7386a6460615804f4c14b976643f961b9833dd5c0bf1f327cd5cb979294f20" }, "downloads": -1, "filename": "oneroster-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9f2c1a7a7408729e606d538935a08bfa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14506, "upload_time": "2019-07-31T04:40:09", "url": "https://files.pythonhosted.org/packages/77/08/2a55aa4f83efaba749cda22f61034a275e8f7a75e09132b25063f5e8b178/oneroster-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4b5346ab79a8041e45eecf82141277d", "sha256": "162aed069ad94b2c6bed8ad25e87740951e866217994ede75b406d5d0109a83d" }, "downloads": -1, "filename": "oneroster-0.0.5.tar.gz", "has_sig": false, "md5_digest": "f4b5346ab79a8041e45eecf82141277d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10550, "upload_time": "2019-07-31T04:40:11", "url": "https://files.pythonhosted.org/packages/35/54/c056754a8f7b3f9206a8c66c554286c38f526520b6197403a411176a03ef/oneroster-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "f01f48213a6b54c364d33e7489b6c151", "sha256": "2773877f0d0eca6479cf15e8028c5099587bb7a1b8fe80d07ad37eacdcb96ff7" }, "downloads": -1, "filename": "oneroster-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f01f48213a6b54c364d33e7489b6c151", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14670, "upload_time": "2019-08-03T07:10:44", "url": "https://files.pythonhosted.org/packages/24/a5/08912e4ea0ead1ff50131856475228dad5817b71909153558c676424b1b5/oneroster-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74d6d1f9c862018fbc5825514e2318e5", "sha256": "87bc6bc99d41cf5d8ea7e00b9407981c08aa19d72f9469e0f4dd3d6cac4f5660" }, "downloads": -1, "filename": "oneroster-0.0.6.tar.gz", "has_sig": false, "md5_digest": "74d6d1f9c862018fbc5825514e2318e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10663, "upload_time": "2019-08-03T07:10:45", "url": "https://files.pythonhosted.org/packages/84/30/31c06bd0a1e6ff93391bbc47c5bfc375f51be79098365311fb279c0a00cb/oneroster-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "e71f13f8af316ce558428f9f16267181", "sha256": "3bf51bd0b3e7308c18d473bccb5d8010b2646c249bcb7f60eec9ba1012277712" }, "downloads": -1, "filename": "oneroster-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e71f13f8af316ce558428f9f16267181", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14707, "upload_time": "2019-08-03T21:03:59", "url": "https://files.pythonhosted.org/packages/3d/0e/05e3b321ba0fe298d208bd257e74d090d739381e3c3c90661b47b2b4d334/oneroster-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d641da170a847b896b31579cf539ec2", "sha256": "bc56347daf6d003d561263d870b7b40a5896611e8c9b9ad87acb2594504746de" }, "downloads": -1, "filename": "oneroster-0.0.7.tar.gz", "has_sig": false, "md5_digest": "0d641da170a847b896b31579cf539ec2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10594, "upload_time": "2019-08-03T21:04:00", "url": "https://files.pythonhosted.org/packages/e3/07/43a0c4506dc380c74089c2b5c9f28719bb2d01a23f1b7c9799107a1710ff/oneroster-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "23f6c809a1a417518999d41c5aadd295", "sha256": "466aff790c35d6076dc25ff0440094be355316e3109c3b5ed38bf905e422b385" }, "downloads": -1, "filename": "oneroster-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "23f6c809a1a417518999d41c5aadd295", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14767, "upload_time": "2019-08-05T00:42:54", "url": "https://files.pythonhosted.org/packages/61/25/0d4c3fccc5f3c625ddb4e9eb6cb53d6e56847eb4bd4f9569bcde7d9e84a6/oneroster-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1809574a4801af81d91a61243a9c35a8", "sha256": "f72e560122853dac08bb8335463eeacfd56b2eb0cd53236a9b2f9ebe0beecd32" }, "downloads": -1, "filename": "oneroster-0.0.8.tar.gz", "has_sig": false, "md5_digest": "1809574a4801af81d91a61243a9c35a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10535, "upload_time": "2019-08-05T00:42:55", "url": "https://files.pythonhosted.org/packages/28/d7/a96f173334b5d546405cf28093a94c00ffe1f2dd80c172b99f36de633253/oneroster-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "38225c6855cd6a258991acd5c569e254", "sha256": "e2bc15de7254fb01c8c0c28c07f0f7cc94b363d41a7bf88b49b2bd66f93aa76f" }, "downloads": -1, "filename": "oneroster-0.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "38225c6855cd6a258991acd5c569e254", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16586, "upload_time": "2019-08-07T03:08:15", "url": "https://files.pythonhosted.org/packages/8d/c9/e0933c713f241db1ebbd396b2a493aa25b3b47bece8f3d0d5298172b404f/oneroster-0.0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a93a827cee82bb7b1238bddbf0a54b25", "sha256": "ec55e33dfc3f2d6dadc750c25568c9ec148bccc6176e1ea6a636fd16e005c7ad" }, "downloads": -1, "filename": "oneroster-0.0.9.tar.gz", "has_sig": false, "md5_digest": "a93a827cee82bb7b1238bddbf0a54b25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13073, "upload_time": "2019-08-07T03:08:16", "url": "https://files.pythonhosted.org/packages/3b/68/c577517d643e6f00d8032781706d5806c71ab21ba2808d94596ff3df8fbc/oneroster-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "13911219a8ab3a7cca65aa977186e527", "sha256": "28b3c6ec242cec1562e08d1951c450677f96cb284a70c3bf296ecb49748d8be0" }, "downloads": -1, "filename": "oneroster-0.0.15-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "13911219a8ab3a7cca65aa977186e527", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17549, "upload_time": "2019-08-12T02:54:48", "url": "https://files.pythonhosted.org/packages/28/e2/487d33b08779ad5ca6a5b12cfcd8878e79a31d935073293fa636e85a4263/oneroster-0.0.15-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb57746f84f631bdbcd48c45bd7f8879", "sha256": "0e64c6e270f9069bdb30cc047a7f2935bcc5484fce1314553f59a3b6f09ac43a" }, "downloads": -1, "filename": "oneroster-0.0.15.tar.gz", "has_sig": false, "md5_digest": "fb57746f84f631bdbcd48c45bd7f8879", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14197, "upload_time": "2019-08-12T02:54:49", "url": "https://files.pythonhosted.org/packages/77/25/425065dcf1f992bd04314de3045484207ef97dbcd8fbb5d957225c43f220/oneroster-0.0.15.tar.gz" } ] }