CSV Processor
|pypi-badge| |CI| |codecov-badge| |doc-badge| |pyversions-badge| |license-badge|
Generic CSV Processing for Django Apps
This library provides a CSVProcessor <https://github.com/openedx/super-csv/blob/master/super_csv/csv_processor.py>
_ class
which should be subclassed to implement your own per-row processing of CSV files.
At minimum, override process_row(row)
.
The mixins support optional checksums of arbitrary columns, and asynchronous processing of files using Celery.
Super CSV is a stand alone library that can be used for CSV management, both syncronous and async.
::
make requirements
Will install all prerequisites. ::
make test
Runs the unit tests in local environment.
Prerequisite: Have your Open edX https://github.com/openedx/devstack properly installed.
Note: When you see "from inside the lms" below, it means that you've run make lms-shell
from your devstack directory
and are on a command prompt inside the LMS container.
#. Clone this repo into ../src/
directory (relative to your "devstack" repo location). This will mount the directory
in a way that is accessible to the lms container.
#. Clone inside the lms, uninstall super-csv and reinstall your local copy.
You can run the following line from inside the lms, or from the host machine run make install-local
.
This is necessary if one wants to use latest version for testing/development purposes::
pip uninstall super-csv -y; pip install -e /edx/src/super-csv
#. Setup dev environment (since virtual environments are recommended for python development, here is an example of using virtualenv. Other tools would work as well). By default, edx containers come with virtualenv preinstalled ::
cd /edx/src/super-csv
virtualenv super-csv-env
source super-csv-env/bin/activate
make requirements
#. That's it.
The code in this repository is licensed under the Apache v2 License unless otherwise noted.
Please see LICENSE.txt
for details.
Contributions are very welcome.
Please read How To Contribute <https://github.com/openedx/.github/blob/master/CONTRIBUTING.md>
_ for details.
The pull request description template should be automatically applied if you are creating a pull request from GitHub. Otherwise you
can find it at PULL_REQUEST_TEMPLATE.md <https://github.com/openedx/super-csv/blob/master/.github/PULL_REQUEST_TEMPLATE.md>
_.
The issue report template should be automatically applied if you are creating an issue on GitHub as well. Otherwise you
can find it at ISSUE_TEMPLATE.md <https://github.com/openedx/super-csv/blob/master/.github/ISSUE_TEMPLATE.md>
_.
Please do not report security issues in public. Please email security@edx.org.
Have a question about this repository, or about Open edX in general? Please
refer to this list of resources
_ if you need any assistance.
.. _list of resources: https://open.edx.org/getting-help
.. |pypi-badge| image:: https://img.shields.io/pypi/v/super-csv.svg :target: https://pypi.python.org/pypi/super-csv/ :alt: PyPI
.. |CI| image:: https://github.com/openedx/super-csv/workflows/Python%20CI/badge.svg?branch=master :target: https://github.com/openedx/super-csv/actions?query=workflow%3A%22Python+CI%22 :alt: CI
.. |codecov-badge| image:: http://codecov.io/github/edx/super-csv/coverage.svg?branch=master :target: http://codecov.io/github/edx/super-csv?branch=master :alt: Codecov
.. |doc-badge| image:: https://readthedocs.org/projects/super-csv/badge/?version=latest :target: http://super-csv.readthedocs.io/en/latest/ :alt: Documentation
.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/super-csv.svg :target: https://pypi.python.org/pypi/super-csv/ :alt: Supported Python versions
.. |license-badge| image:: https://img.shields.io/github/license/edx/super-csv.svg :target: https://github.com/openedx/super-csv/blob/master/LICENSE.txt :alt: License
.. All enhancements and patches to super_csv will be documented in this file. It adheres to the structure of http://keepachangelog.com/ , but in reStructuredText instead of Markdown (for ease of incorporation into Sphinx documentation and the PyPI description).
This project adheres to Semantic Versioning (http://semver.org/).
.. There should always be an "Unreleased" section for changes pending release.
[3.1.0] - 2023-07-31
* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is
deprecated. See https://github.com/openedx/edx-sphinx-theme/issues/184 for
more details.
* Added support of Django 4.2
[3.0.1] - 2022-02-17
[3.0.0] - 2022-02-17
* Fix `dev.in` to pull from `ci.txt` rather than `travis.txt`.
* Dropped Django22, 30 and 31 support.
* Added Django40 support.
[2.1.1] - 2021-09-01
try/catch
.[2.1.0] - 2020-07-26
* Added Django 3.0, 3.1 & 3.2 Support
[2.0.1] - 2020-03-12
[2.0.0] - 2020-12-23
* Removed python 3.5 support
* Adds support for celery 5
[1.1.0] - 2020-12-02
[1.0.3] - 2020-11-20
* Updated travis badge in README.rst to point to travis-ci.com
[1.0.2] - 2020-09-14
[1.0.1] - 2020-09-14
* Minor updates to attrs, code-annotations, and freezegun dependencies
[1.0.0] - 2020-09-02
[0.9.9] - 2020-05-28
* Removed caniusepython3 & python_2_unicode_compatible packages
[0.9.8] - 2020-05-04
[0.9.7] - 2020-03-05
* Remove django-celery dependency
[0.9.6] - 2019-11-20
[0.9.5] - 2019-10-08
* Decode the input file before passing to DictReader if necessary
[0.9.4] - 2019-09-24
DeferrableMixin.save()
method take an optional operating_user
parameter.[0.9.3] - 2019-09-20
* Commit after ``CSVOperation`` creation so that async celery tasks can find the operation record when they start.
[0.9.2] - 2019-09-17
[0.9.1] - 2019-07-19
* Reverses the ordering of CSV operation history rows
[0.8] - 2019-07-22
[0.7.1] - 2019-07-19
* Exposes additional fields in serialized history of operations re:degree of success of the operation
[0.5.0] - 2019-07-02
[0.1.0] - 2019-05-15
Added
_____
* First release on PyPI.