![Logo of the project](https://raw.githubusercontent.com/SummitPublicSchools/ducttape/master/img/duct-tape_480x150.png)
# Duct Tape
Duct Tape is a Python interface for downloading data, uploading data, and controlling supported Ed-Tech software.
It is built on top of Requests and Selenium and is intended to help K-12 school system data and IT teams save
time and use "better" code to automate their work flows.
## Currently Supported Products
The following products are currently supported, some have more functionality that others.
* SchoolMint
* Google Sheets
* Lexia
* Clever
* Informed K12
* Mealtime
* Typing Agent
* Summit Learning
* SEIS
## Installing / Getting started
To use this project, complete the following steps (note: we are currently running out of master and
have not cut a release yet):
0. Set up a Chrome + Selenium environment on your computer. Instructions [here](https://medium.com/@patrick.yoho11/installing-selenium-and-chromedriver-on-windows-e02202ac2b08).
1. Download or clone the project to your computer.
2. Navigate to the root `ducttape` directory in your command line/terminal (the one with the setup.py file in it). Run `pip install ./`.
3. Check out the SchoolMint example in the [`examples`](https://github.com/SummitPublicSchools/ducttape/tree/master/examples) folder to see how easy it can be to grab your data.
## Documentation
A good number of functions have strong doc strings describing their purpose, parameters, and return types.
For now, this along with a couple of [examples](https://github.com/SummitPublicSchools/ducttape/tree/master/examples) are the primary sources of documentation.
## Features
* Downloading data from ed-tech Web UIs without human interaction
* Uploading data to ed-tech through web UIs without human interaction (coming soon)
* Controlling ed-tech web UIs through Python (limited implementation)
The original development purpose of this project was to automate data extraction from ed-tech
products in Python and return them as Pandas dataframes for analysis. Therefore, the biggest
feature set is around downloading flat files from different ed-tech products that don't provide
API and SQL access at all the data you might need to get to. Some work is in progress around
uploading data and controlling other portions of ed-tech platforms, but it is still in
private development.
## Developing
The vision for this project is to have contributors from across different school systems help build
out a centralized, well-coded, tested library for interacting with ed-tech products that don't provide
adequate customer-facing APIs. This will be most successful if contributors come on board as developers
from different school systems; iron will sharpen iron and we will get better coverage of ed-tech products.
If you are interested in developing (and especially if you are interested in adding in support for a new
product), please reach out to pyoho@summitps.org.
#### Ideas for Future Development
* Add the ability to download data from a new product
* Add a missing feature to a currently supported product.
* Fully automating unit testing
## Unit Tests
Unit tests have been written for much of the functionality within this package. These are run
before any commits are made to master. However, they are context specific (in that you need
to use live instances to do the testing) and are not all fully automated (there are still cases
where a human needs to check that the downloaded data meets expected conditions since it is
being tested off of production systems).
A future area of development would be to figure out how to properly mock interacting with
these ed-tech platforms so that we could fully automate unit testing and have better coverage.
## Contributing
If you'd like to contribute new functionality, please reach out to patrick@innovateedunyc.org. If you have
a bug fix or a code clean-up suggestion, feel free to fork us and submit a pull request.
## Licensing
Please see the license file.
Raw data
{
"_id": null,
"home_page": "https://github.com/SummitPublicSchools/ducttape",
"name": "duct-tape",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "automation, education, illuminate, selenium, etl",
"author": "Patrick Yoho",
"author_email": "trickyoho@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/69/ee/716c5fb634b452a671df6d7ccd5efe1644d6e6f068e4dba871d096b2f575/duct-tape-0.26.2.tar.gz",
"platform": null,
"description": "![Logo of the project](https://raw.githubusercontent.com/SummitPublicSchools/ducttape/master/img/duct-tape_480x150.png)\r\n\r\n# Duct Tape\r\n\r\nDuct Tape is a Python interface for downloading data, uploading data, and controlling supported Ed-Tech software.\r\nIt is built on top of Requests and Selenium and is intended to help K-12 school system data and IT teams save\r\ntime and use \"better\" code to automate their work flows.\r\n\r\n## Currently Supported Products\r\n\r\nThe following products are currently supported, some have more functionality that others.\r\n* SchoolMint\r\n* Google Sheets\r\n* Lexia\r\n* Clever\r\n* Informed K12\r\n* Mealtime\r\n* Typing Agent\r\n* Summit Learning\r\n* SEIS\r\n\r\n## Installing / Getting started\r\n\r\nTo use this project, complete the following steps (note: we are currently running out of master and \r\nhave not cut a release yet):\r\n\r\n0. Set up a Chrome + Selenium environment on your computer. Instructions [here](https://medium.com/@patrick.yoho11/installing-selenium-and-chromedriver-on-windows-e02202ac2b08).\r\n1. Download or clone the project to your computer.\r\n2. Navigate to the root `ducttape` directory in your command line/terminal (the one with the setup.py file in it). Run `pip install ./`.\r\n3. Check out the SchoolMint example in the [`examples`](https://github.com/SummitPublicSchools/ducttape/tree/master/examples) folder to see how easy it can be to grab your data.\r\n\r\n## Documentation\r\n\r\nA good number of functions have strong doc strings describing their purpose, parameters, and return types.\r\nFor now, this along with a couple of [examples](https://github.com/SummitPublicSchools/ducttape/tree/master/examples) are the primary sources of documentation.\r\n\r\n## Features\r\n\r\n* Downloading data from ed-tech Web UIs without human interaction\r\n* Uploading data to ed-tech through web UIs without human interaction (coming soon)\r\n* Controlling ed-tech web UIs through Python (limited implementation)\r\n\r\nThe original development purpose of this project was to automate data extraction from ed-tech\r\nproducts in Python and return them as Pandas dataframes for analysis. Therefore, the biggest\r\nfeature set is around downloading flat files from different ed-tech products that don't provide\r\nAPI and SQL access at all the data you might need to get to. Some work is in progress around\r\nuploading data and controlling other portions of ed-tech platforms, but it is still in\r\nprivate development.\r\n\r\n## Developing\r\n\r\nThe vision for this project is to have contributors from across different school systems help build\r\nout a centralized, well-coded, tested library for interacting with ed-tech products that don't provide\r\nadequate customer-facing APIs. This will be most successful if contributors come on board as developers\r\nfrom different school systems; iron will sharpen iron and we will get better coverage of ed-tech products.\r\n\r\nIf you are interested in developing (and especially if you are interested in adding in support for a new\r\nproduct), please reach out to pyoho@summitps.org.\r\n\r\n#### Ideas for Future Development\r\n\r\n* Add the ability to download data from a new product\r\n* Add a missing feature to a currently supported product.\r\n* Fully automating unit testing\r\n\r\n## Unit Tests\r\n\r\nUnit tests have been written for much of the functionality within this package. These are run\r\nbefore any commits are made to master. However, they are context specific (in that you need\r\nto use live instances to do the testing) and are not all fully automated (there are still cases\r\nwhere a human needs to check that the downloaded data meets expected conditions since it is\r\nbeing tested off of production systems).\r\n\r\nA future area of development would be to figure out how to properly mock interacting with\r\nthese ed-tech platforms so that we could fully automate unit testing and have better coverage.\r\n\r\n## Contributing\r\n\r\nIf you'd like to contribute new functionality, please reach out to patrick@innovateedunyc.org. If you have\r\na bug fix or a code clean-up suggestion, feel free to fork us and submit a pull request.\r\n\r\n## Licensing\r\n\r\nPlease see the license file.\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Duct Tape is a Python interface for downloading data, uploading data, and controlling supported Ed-Tech software.",
"version": "0.26.2",
"project_urls": {
"Homepage": "https://github.com/SummitPublicSchools/ducttape"
},
"split_keywords": [
"automation",
" education",
" illuminate",
" selenium",
" etl"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "69ee716c5fb634b452a671df6d7ccd5efe1644d6e6f068e4dba871d096b2f575",
"md5": "666e51308d3948ad5fa6137a1d98bda5",
"sha256": "9b076973d7a2c8eb52b0c43b9e0eca642b775544b2f21143c5ad686d0db98f27"
},
"downloads": -1,
"filename": "duct-tape-0.26.2.tar.gz",
"has_sig": false,
"md5_digest": "666e51308d3948ad5fa6137a1d98bda5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 50668,
"upload_time": "2024-07-11T20:50:14",
"upload_time_iso_8601": "2024-07-11T20:50:14.994639Z",
"url": "https://files.pythonhosted.org/packages/69/ee/716c5fb634b452a671df6d7ccd5efe1644d6e6f068e4dba871d096b2f575/duct-tape-0.26.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-11 20:50:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "SummitPublicSchools",
"github_project": "ducttape",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "beautifulsoup4",
"specs": []
},
{
"name": "future",
"specs": []
},
{
"name": "oauth2client",
"specs": []
},
{
"name": "numpy",
"specs": []
},
{
"name": "paramiko",
"specs": []
},
{
"name": "psycopg2-binary",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "pandas",
"specs": [
[
">=",
"0.20.3"
]
]
},
{
"name": "selenium",
"specs": [
[
">=",
"3.4.3"
]
]
},
{
"name": "xlrd",
"specs": [
[
">=",
"0.9.0"
]
]
}
],
"lcname": "duct-tape"
}