LDLite-RTR
======
Copyright (C) 2021-2024 The Open Library Foundation. This software is
distributed under the terms of the Apache License, Version 2.0. See
the file
[LICENSE](https://github.com/bltravis/ldlite/blob/master/LICENSE)
for more information.
>**LDLite-RTR is a fork of the original LDLite tool from the Library Data Platform project
>that supports Refresh Token Rotation (RTR) in the Quesnelia release (and later) of FOLIO.
>It should function as a drop-in replacement for the original ldlite library.**
LDLite-RTR is a lightweight, open source reporting tool for Okapi-based
services. It is part of the Library Data Platform project and
provides basic LDP functions without requiring the server to be
installed.
To install LDLite or upgrade to the latest version:
```bash
$ python -m pip install --upgrade ldlite-rtr
```
(On some systems it might be `python3` rather than `python`.)
To extract and transform data:
```python
$ python
>> > import ldlite
>> > ld = ldlite.LDLite()
>> > ld.connect_okapi(url='https://folio-juniper-okapi.dev.folio.org/',
tenant='diku',
user='diku_admin',
password='admin')
>> > db = ld.connect_db()
>> > _ = ld.query(table='g', path='/groups', query='cql.allRecords=1 sortby id')
ldlite: querying: / groups
ldlite: created
tables: g, g__t, g__tcatalog
>> > ld.select(table='g__t')
```
```
__id | id | desc | expiration_offset_in_days | group
------+--------------------------------------+-----------------------+---------------------------+-----------
1 | 3684a786-6671-4268-8ed0-9db82ebca60b | Staff Member | 730 | staff
2 | 503a81cd-6c26-400f-b620-14c08943697c | Faculty Member | 365 | faculty
3 | ad0bc554-d5bc-463c-85d1-5562127ae91b | Graduate Student | | graduate
4 | bdc2b6d4-5ceb-4a12-ab46-249b9a68473e | Undergraduate Student | | undergrad
(4 rows)
```
```python
>> > _ = ld.query(table='u', path='/users', query='cql.allRecords=1 sortby id')
ldlite: querying: / users
ldlite: created
tables: u, u__t, u__t__departments, u__t__personal__addresses, u__t__proxy_for, u__tcatalog
>> > cur = db.cursor()
>> > _ = cur.execute("""
CREATE TABLE user_groups AS
SELECT u__t.id, u__t.username, g__t.group
FROM u__t
JOIN g__t ON u__t.patron_group = g__t.id;
""")
>> > ld.export_excel(table='user_groups', filename='groups.xlsx')
```
Features
--------
* Queries Okapi-based modules and transforms JSON data into tables for
easier reporting
* Full SQL query support and export to CSV or Excel
* Compatible with DBeaver database tool
* Compatible with DuckDB and PostgreSQL database systems
* PostgreSQL support enables:
* Sharing the data in a multiuser database
* Access to the data using more database tools
* Storing the data in an existing LDP database if available
* Runs on Windows, macOS, and Linux.
More examples
-------------
* [An example running in Jupyter
Notebook](https://github.com/bltravis/ldlite/blob/main/examples/example.md)
* [Loading sample data from FOLIO demo
sites](https://github.com/bltravis/ldlite/blob/main/examples/folio_demo.py)
* [Using LDLite with SRS MARC data](https://github.com/bltravis/ldlite/blob/main/srs.md)
LDLite resources
----------------
>**Note: the following resources are for the original ldlite project. There shouldn't be any
>significant differences right now, but that could change**
* [LDLite API documentation](https://library-data-platform.github.io/ldlite/ldlite.html)
* The LDP project runs a Slack workspace which is a good place to ask
questions or to share your work. It also serves as a community space
for working together on library data problems. To request an invitation,
use the [Contact page](https://librarydataplatform.org/contact/)
on the LDP website.
Other resources
---------------
* [FOLIO API documentation](https://dev.folio.org/reference/api/)
* [Python learning resources](https://www.python.org/about/gettingstarted/)
Raw data
{
"_id": null,
"home_page": null,
"name": "ldlite-rtr",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "okapi, folio, analytics, ldlite, reporting",
"author": "Nassib Nassar",
"author_email": "nassib@indexdata.com",
"download_url": "https://files.pythonhosted.org/packages/96/31/c2545dcab623e29ad88da28b8a0c2d8a125cf042d7972510c5b19b756aed/ldlite_rtr-0.1.1.tar.gz",
"platform": null,
"description": "LDLite-RTR\n======\n\nCopyright (C) 2021-2024 The Open Library Foundation. This software is\ndistributed under the terms of the Apache License, Version 2.0. See\nthe file\n[LICENSE](https://github.com/bltravis/ldlite/blob/master/LICENSE)\nfor more information.\n\n>**LDLite-RTR is a fork of the original LDLite tool from the Library Data Platform project\n>that supports Refresh Token Rotation (RTR) in the Quesnelia release (and later) of FOLIO.\n>It should function as a drop-in replacement for the original ldlite library.**\n\nLDLite-RTR is a lightweight, open source reporting tool for Okapi-based\nservices. It is part of the Library Data Platform project and\nprovides basic LDP functions without requiring the server to be\ninstalled.\n\nTo install LDLite or upgrade to the latest version:\n\n```bash\n$ python -m pip install --upgrade ldlite-rtr\n```\n\n(On some systems it might be `python3` rather than `python`.)\n\nTo extract and transform data:\n\n```python\n$ python\n>> > import ldlite\n>> > ld = ldlite.LDLite()\n>> > ld.connect_okapi(url='https://folio-juniper-okapi.dev.folio.org/',\n tenant='diku',\n user='diku_admin',\n password='admin')\n>> > db = ld.connect_db()\n>> > _ = ld.query(table='g', path='/groups', query='cql.allRecords=1 sortby id')\nldlite: querying: / groups\nldlite: created\ntables: g, g__t, g__tcatalog\n>> > ld.select(table='g__t')\n```\n\n```\n __id | id | desc | expiration_offset_in_days | group \n------+--------------------------------------+-----------------------+---------------------------+-----------\n 1 | 3684a786-6671-4268-8ed0-9db82ebca60b | Staff Member | 730 | staff \n 2 | 503a81cd-6c26-400f-b620-14c08943697c | Faculty Member | 365 | faculty \n 3 | ad0bc554-d5bc-463c-85d1-5562127ae91b | Graduate Student | | graduate \n 4 | bdc2b6d4-5ceb-4a12-ab46-249b9a68473e | Undergraduate Student | | undergrad \n(4 rows)\n```\n\n```python\n>> > _ = ld.query(table='u', path='/users', query='cql.allRecords=1 sortby id')\nldlite: querying: / users\nldlite: created\ntables: u, u__t, u__t__departments, u__t__personal__addresses, u__t__proxy_for, u__tcatalog\n>> > cur = db.cursor()\n>> > _ = cur.execute(\"\"\"\n CREATE TABLE user_groups AS\n SELECT u__t.id, u__t.username, g__t.group\n FROM u__t\n JOIN g__t ON u__t.patron_group = g__t.id;\n \"\"\")\n>> > ld.export_excel(table='user_groups', filename='groups.xlsx')\n```\n\nFeatures\n--------\n\n* Queries Okapi-based modules and transforms JSON data into tables for\n easier reporting\n* Full SQL query support and export to CSV or Excel\n* Compatible with DBeaver database tool\n* Compatible with DuckDB and PostgreSQL database systems\n* PostgreSQL support enables:\n * Sharing the data in a multiuser database\n * Access to the data using more database tools\n * Storing the data in an existing LDP database if available\n* Runs on Windows, macOS, and Linux.\n\nMore examples\n-------------\n\n* [An example running in Jupyter\n Notebook](https://github.com/bltravis/ldlite/blob/main/examples/example.md)\n\n* [Loading sample data from FOLIO demo\n sites](https://github.com/bltravis/ldlite/blob/main/examples/folio_demo.py)\n\n* [Using LDLite with SRS MARC data](https://github.com/bltravis/ldlite/blob/main/srs.md)\n\nLDLite resources\n----------------\n\n>**Note: the following resources are for the original ldlite project. There shouldn't be any\n>significant differences right now, but that could change**\n\n* [LDLite API documentation](https://library-data-platform.github.io/ldlite/ldlite.html)\n\n* The LDP project runs a Slack workspace which is a good place to ask\n questions or to share your work. It also serves as a community space\n for working together on library data problems. To request an invitation,\n use the [Contact page](https://librarydataplatform.org/contact/)\n on the LDP website.\n\nOther resources\n---------------\n\n* [FOLIO API documentation](https://dev.folio.org/reference/api/)\n\n* [Python learning resources](https://www.python.org/about/gettingstarted/)\n\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Lightweight analytics tool for Okapi-based services. Based on the original ldlite package from the Library Data Platform project: https://github.com/library-data-platform/ldlite",
"version": "0.1.1",
"project_urls": {
"Repository": "https://github.com/bltravis/ldlite"
},
"split_keywords": [
"okapi",
" folio",
" analytics",
" ldlite",
" reporting"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4f456502a6ab0f7afa5ebd4ea4cdfc501deee6d9d556acf5a0b92f239b68fc5f",
"md5": "3805c95f90c20eb2830d1444977c5771",
"sha256": "69e073411748b37c8b7ad291b11b444c741e1b6f217a21a2a1159b071a27458d"
},
"downloads": -1,
"filename": "ldlite_rtr-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3805c95f90c20eb2830d1444977c5771",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 21290,
"upload_time": "2025-01-15T08:23:35",
"upload_time_iso_8601": "2025-01-15T08:23:35.123251Z",
"url": "https://files.pythonhosted.org/packages/4f/45/6502a6ab0f7afa5ebd4ea4cdfc501deee6d9d556acf5a0b92f239b68fc5f/ldlite_rtr-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9631c2545dcab623e29ad88da28b8a0c2d8a125cf042d7972510c5b19b756aed",
"md5": "866e32ad750a484b926a390165c6841f",
"sha256": "1ac6ee5d1b55f82b7961f7fd05295bacdc0de68a968dac13d4030491a3fa443e"
},
"downloads": -1,
"filename": "ldlite_rtr-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "866e32ad750a484b926a390165c6841f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 19344,
"upload_time": "2025-01-15T08:23:37",
"upload_time_iso_8601": "2025-01-15T08:23:37.641682Z",
"url": "https://files.pythonhosted.org/packages/96/31/c2545dcab623e29ad88da28b8a0c2d8a125cf042d7972510c5b19b756aed/ldlite_rtr-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-15 08:23:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bltravis",
"github_project": "ldlite",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "anyio",
"specs": [
[
"==",
"4.7.0"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2024.8.30"
]
]
},
{
"name": "colorama",
"specs": [
[
"==",
"0.4.6"
]
]
},
{
"name": "duckdb",
"specs": [
[
"==",
"1.1.3"
]
]
},
{
"name": "exceptiongroup",
"specs": [
[
"==",
"1.2.2"
]
]
},
{
"name": "folioclient",
"specs": [
[
"==",
"0.61.1"
]
]
},
{
"name": "h11",
"specs": [
[
"==",
"0.14.0"
]
]
},
{
"name": "httpcore",
"specs": [
[
"==",
"1.0.7"
]
]
},
{
"name": "httpx",
"specs": [
[
"==",
"0.27.2"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "jsonref",
"specs": [
[
"==",
"1.1.0"
]
]
},
{
"name": "psycopg2-binary",
"specs": [
[
"==",
"2.9.10"
]
]
},
{
"name": "py-openapi-schema-to-json-schema",
"specs": [
[
"==",
"0.0.3"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.9.0.post0"
]
]
},
{
"name": "pyyaml",
"specs": [
[
"==",
"6.0.2"
]
]
},
{
"name": "six",
"specs": [
[
"==",
"1.17.0"
]
]
},
{
"name": "sniffio",
"specs": [
[
"==",
"1.3.1"
]
]
},
{
"name": "tqdm",
"specs": [
[
"==",
"4.67.1"
]
]
},
{
"name": "typing-extensions",
"specs": [
[
"==",
"4.12.2"
]
]
},
{
"name": "xlsxwriter",
"specs": [
[
"==",
"3.2.0"
]
]
}
],
"lcname": "ldlite-rtr"
}