{ "info": { "author": "Just van den Broecke", "author_email": "justb4@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Topic :: Scientific/Engineering :: GIS" ], "description": "# Stetl - Streaming ETL\n\nStetl, streaming ETL, pronounced \"staedl\", is a lightweight ETL-framework for geospatial data conversion. \n\n[![Build Status](https://travis-ci.org/geopython/stetl.png)](https://travis-ci.org/geopython/stetl)\n[![Documentation Status](https://img.shields.io/badge/docs-latest-brightgreen.svg)](http://stetl.readthedocs.org/en/latest)\n[![Gitter Chat](http://img.shields.io/badge/chat-online-brightgreen.svg)](https://gitter.im/geopython/stetl)\n\nNotice: the Stetl GH repo is now at the [GeoPython GH organization](https://github.com/geopython).\n\n# License\n\nStetl is released under a [GNU GPL v3](https://en.wikipedia.org/wiki/GNU_General_Public_License) license\n(see [LICENSE.txt](LICENSE.txt)).\n\n## Documentation\n\nThe Stetl website and documentation can be found via http://stetl.org.\nFor a quick overview read the [5-minute Stetl-introduction](http://www.slideshare.net/justb4/5-minute-intro-to-setl), \nor a [more detailed presentation](http://www.slideshare.net/justb4/stetl-foss4g20131024v1).\nStetl was presented at several events like the\n[FOSS4G 2013 in Nottingham](http://2013.foss4g.org) and [GeoPython 2016](http://www.geopython.net).\n\n## Concepts \n\nStetl basically glues together existing parsing and transformation tools like [GDAL/OGR](http://gdal.org), Jinja2 and \nXSLT with custom Python code. By using native libraries like `libxml2` and `libxslt` (via Python `lxml`) Stetl is speed-optimized.\n\nA configuration file, in Python config `.ini` format, specifies a chained sequence of transformation \nsteps: typically an `Input` connected to one or more `Filters`, and finally to an `Output`.\nAt runtime, this sequence is instantiated and run as a linked series of Python objects. These objects are \nsymbolically specified (by their module/class name) and parameterized in the config file. \nVia the `stetl -c ` command, the transformation is executed.\n\nStetl has been proven to handle 10's of millions of GML objects without any memory issues.\nThis is achieved through a technique called \"streaming and splitting\". \nFor example: using the `OgrPostgisInput` module an GML stream can be generated from the database.\nA component called the `GmlSplitter` can split this stream into manageable chunks (like 20000 features) \nand feed this upstream into the ETL chain.\n\n## Use Cases\n\nStetl has been found particularly useful for complex GML-related ETL-cases, like those found\nwithin [EU INSPIRE](http://inspire.ec.europa.eu/) Data Harmonization and the transformation\nof GML/XML-based National geo-datasets to for example PostGIS.\n\nMost of the data conversions within the [Dutch NLExtract Project](https://github.com/nlextract/NLExtract) apply Stetl.\n\nStetl also proved to be very effective in [IoT-related transformations involving the SensorWeb/SOS](https://github.com/smartemission).\n\n## Examples\n\nBrowse all examples under the [examples dir](examples). \nBest is to start with the [basic examples](examples/basics)\n\n## Installation\n \nStetl can be installed via PyPi `pip install stetl` and recently as a [Stetl Docker image](https://hub.docker.com/r/geopython/stetl).\nMore on [installation in the documentation](http://www.stetl.org/en/latest/install.html).\n\n## Contributing\n\nAnyone and everyone is welcome to contribute. Please take a moment to\nreview the [guidelines for contributing](CONTRIBUTING.md).\n\n* [Bug reports](CONTRIBUTING.md#bugs)\n* [Feature requests](CONTRIBUTING.md#features)\n* [Pull requests](CONTRIBUTING.md#pull-requests)\n\n## Origins\n\nStetl originated in the INSPIRE-FOSS project: [2009-2013 now archived](https://github.com/justb4/inspire-foss). \nSince then Stetl evolved into a wider use like\ntransforming [Dutch GML-based Open Datasets](https://github.com/nlextract/NLExtract) such as IMGEO/BGT (Large Scale Topography) \nand IMKAD/BRK (Cadastral Data) and [Sensor Data Transformation and Calibration](https://github.com/smartemission/docker-se-stetl).\n\n## Finally\n\nThe word \"stetl\" is also an alternative writing for \"shtetl\":\nhttp://en.wikipedia.org/wiki/Stetl : \"...Material things were neither disdained nor\nextremely praised in the shtetl. Learning and education were the ultimate measures of \nworth in the eyes of the community,\nwhile money was secondary to status...\"\n\n\n\n\nChanges\n=======\n\nv2.0 - april 11, 2019\n---------------------\n\nFIRST VERSION SUPPORTING PYTHON3-ONLY!\n\nSee closed issues in Milestone 2.0: https://github.com/geopython/stetl/milestone/10?closed=1\nThese are all related to the Py2 to Py3 migration. Other issues are moved to later Milestones/releases.\n\nMain is the PR worked on for the Py2 to Py3 migration:\nhttps://github.com/geopython/stetl/pull/81\n\nv1.3 - march 20, 2019\n---------------------\n\nLAST VERSION SUPPORTING PYTHON2!\nSee closed issues in Milestone 1.3: https://github.com/geopython/stetl/milestone/9?closed=1\n\nVery few changes, this release is mainly to make a baseline for v2.0 (Python3).\n\nv1.2 - july 7, 2018\n-------------------\n\nSee closed issues in Milestone 1.2: https://github.com/geopython/stetl/milestone/8?closed=1\n\nMost important changes are related to deployment in Docker and Kubernetes environments, dealing\nwith (env) variables, Stetl arguments and logging, for example:\n\n- issue #71: Allow Environment vars to substitute/override config template arg-variables\n- issue #72: Allow multiple -a args for Stetl main prog. Allowing multiple -a arguments allows\n for more simpler overriding of for example default options.\n- #68 Stetl should not output passwords and other particular data in its log\n\nv1.1.1 - november 7, 2017\n-------------------------\n\nBiggest change is that the Stetl repo moved to https://github.com/geopython/stetl/.\n\nSee closed issues in Milestone 1.1.1: https://github.com/geopython/stetl/milestone/6?closed=1\n\nHighlights:\n\n- new Component Splitter to split (Filter/Output) data streams within a Chain\n- new Component Merger to combine (Input) data streams within a Chain\n- Splitter and Merger can be combined in single Chain\n- automatic Travis build\n- more Unit tests\n- flake8 for clean Python code\n- move to GDAL v2 (though v1 may still work)\n- new compact Docker Image based on debian:stretch-slim\n- bugfixes XML stream support\n\nv1.0.9 - 17 june 2016\n---------------------\n\nSee https://github.com/geopython/stetl/issues?q=milestone%3A%22Version+1.0.9%22+is%3Aclosed\n\nHighlights:\n\n- Substitutable config options in properties file (-a arg)\n- Docker support via Stetl Docker image\n- Generic ogr2ogr Input Component enhancement\n\nv1.0.8 - 2 july 2015\n--------------------\n\nSee https://github.com/geopython/stetl/issues?q=milestone%3A%22Version+1.0.8%22\n\n- generic OgrOutput component\n- Apache Log File Input\n\nv1.0.7 - 24 nov 2014\n--------------------\n\n- start of Stetl Format conversion Filter\n- generic OgrInput component\n- SQLite Input component\n- BAG to INSPIRE Addresses example with Jinja2 Templating Filter\n- Jinja2 Filter refinements\n\nv1.0.6 - 5 sept 2014\n--------------------\n\n- allow spatial_extent in OGROutput Top10NL example\n- httpinput more robust\n- Packet: new type 'record', as Python dict structure\n- httpinput: ApacheDirInput, input data from Apache index listing\n- dboutput: PostgresInsertOutput, insert single record into Postgres\n- component: add before_/after_invoke and after_chain_invoke() for intercepting\n- filters: start of Python Templating filters: simple string and Jinja2 templating\n- Packet: new type 'struct' basically a free form dict, the result of reading CSV\n- input: CSV file input\n- new examples: 9_string_templating and 10_jinja2_templating\n- start stetl --doc option to print class configuration info\n- config: start of adding meta attribute config info via class vars of type Attr\n\nv1.0.5 - 19 feb 2014\n--------------------\n\n- cater for strange lxml parse error: https://bugs.launchpad.net/lxml/+bug/1185701\n- more Dutch BGT (large scale topo) examples by thijsbrentjens\n\nv1.0.4 - 23 sept 2013\n---------------------\n\n- more documention\n- Dutch BGT (Basis Registratie Grootschalige Topografie) example\n- Ordnance Survey Mastermap example\n- strip XML namespaces option to XmlElementStreamerFileInput\n\nv1.0.1 v1.0.3 - aug/sept 2013\n-----------------------------\nMinor changes to enable distribution.\n\n\nv1.0.0 - june 2013\n------------------\n\n- First version\n- Add to Python Package Index (#3).\n\nCredits\n=======\n\nStetl is developed by:\n\n* Just van den Broecke (initiator, http://www.justobjects.nl)\n* Frank Steggink\n* Thijs Brentjens\n* and more, see contributors: https://github.com/geopython/stetl/graphs/contributors\n\nBas Couwenberg is providing Debian/Ubuntu packaging.\n\nRob van Loon preparing Python3 migration and other.\n\nThis project would not be possible without the great work of Frank Warmerdam and other\nGDAL/OGR developers (http://gdal.org).\n\nPlus the people that brought Python, PostGIS (Paul Ramsey et al.), Jinja2, lxml and the libs\nlike GEOS, Proj, libxml2 and libxslt.\n\nWe are mainly standing on the shoulders of these giants.\n\nThanks to Tom Kralidis for helping out to move from personal repo to https://github.com/geopython organization.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/geopython/stetl", "keywords": "etl xsl gdal gis vector feature data gml xml", "license": "GNU GPL v3", "maintainer": "Just van den Broecke", "maintainer_email": "justb4@gmail.com", "name": "Stetl", "package_url": "https://pypi.org/project/Stetl/", "platform": "", "project_url": "https://pypi.org/project/Stetl/", "project_urls": { "Homepage": "http://github.com/geopython/stetl" }, "release_url": "https://pypi.org/project/Stetl/2.0/", "requires_dist": null, "requires_python": "", "summary": "Transformation and conversion framework (ETL) mainly for geospatial data", "version": "2.0" }, "last_serial": 5129349, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "79b96b20e2ab7f1e7428541b3f8fed6f", "sha256": "43b1384efb5f07970526b45dd78caa7abba53d5edd5ef62f8a01ea91b29f7c13" }, "downloads": -1, "filename": "Stetl-1.0.2.tar.gz", "has_sig": false, "md5_digest": "79b96b20e2ab7f1e7428541b3f8fed6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 275089, "upload_time": "2013-06-26T16:13:05", "url": "https://files.pythonhosted.org/packages/e7/c6/eaf5ee80903287db81b3a09b2c562690a35df590a87ec221a9eb0d22c69f/Stetl-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "c3fa4b356cb30df116de084eb7373e1d", "sha256": "bee8248c9c45d0485e225b6bb661870bd0124aa81ed62b91bfa1ee721080f0e7" }, "downloads": -1, "filename": "Stetl-1.0.3.tar.gz", "has_sig": false, "md5_digest": "c3fa4b356cb30df116de084eb7373e1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 152305, "upload_time": "2013-09-16T16:06:40", "url": "https://files.pythonhosted.org/packages/0d/65/6874a3e3181222487eb59ba745cc110e80e8b3420369b7abd43e1991f0e6/Stetl-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "a62bd601fbbace170e97e08c1482d28e", "sha256": "ae9726b3c02fcb0232ba81bb2f0af584d014d1f5978fdd2ac705c6bbfc4bb88c" }, "downloads": -1, "filename": "Stetl-1.0.4.tar.gz", "has_sig": false, "md5_digest": "a62bd601fbbace170e97e08c1482d28e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 336036, "upload_time": "2013-09-23T12:01:30", "url": "https://files.pythonhosted.org/packages/95/ab/105b606b249f45cb205f530e6f9516d8e0f1933d93f4e3947ad25fdea275/Stetl-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "bd9d3e3806e2b450c47f79fc5c539efa", "sha256": "9475416f0f90c5fdad72b66e1cd61d82432c68448475c0cf99482f5516bd9202" }, "downloads": -1, "filename": "Stetl-1.0.5.tar.gz", "has_sig": false, "md5_digest": "bd9d3e3806e2b450c47f79fc5c539efa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6183956, "upload_time": "2014-02-19T14:58:39", "url": "https://files.pythonhosted.org/packages/c3/47/2c22881d1a857d6d2b74d427a9faf401d9b8913c00da05c1d1a7f3f39ab9/Stetl-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "4c98c875d79884a6b3e077dfc97c4f58", "sha256": "53d717c4b42c30c551557f1689743d466bfcfd11126da2b3735c4b5cb552a32c" }, "downloads": -1, "filename": "Stetl-1.0.6.tar.gz", "has_sig": false, "md5_digest": "4c98c875d79884a6b3e077dfc97c4f58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6163883, "upload_time": "2014-09-05T12:15:21", "url": "https://files.pythonhosted.org/packages/f2/6d/a7a97170a2ec47b1d316b19f11eedf50a807ed356d7acef223c8d54a6a0b/Stetl-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "0b7b4ea29e0d0ec8b9cc16d662e8d2cf", "sha256": "7e52ab27732b682530cce393d5f8484333f2dab58527f12ba64d77dc01d18bff" }, "downloads": -1, "filename": "Stetl-1.0.7.tar.gz", "has_sig": false, "md5_digest": "0b7b4ea29e0d0ec8b9cc16d662e8d2cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6199091, "upload_time": "2014-11-24T10:31:45", "url": "https://files.pythonhosted.org/packages/a6/f9/7eaf7349d47f9db6036e8ec3b7dcb4989c7c965fe0d1c0ae4d28408801d9/Stetl-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "6f6549f8b0d0a5ad14479d4a2b44560d", "sha256": "28cf7f5038eb08db8f4bd947ffb8e9ef79351b5ff4c48445a6a1b2ae216c9591" }, "downloads": -1, "filename": "Stetl-1.0.8.tar.gz", "has_sig": false, "md5_digest": "6f6549f8b0d0a5ad14479d4a2b44560d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6215607, "upload_time": "2015-07-03T15:00:25", "url": "https://files.pythonhosted.org/packages/f6/9a/71e9d151944126129e1cf2cad7a19cb4f13e3d2c920802a521d092852ec5/Stetl-1.0.8.tar.gz" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "ce62b97640bbe91282c4dcc9c61af14d", "sha256": "e5f9cff93003e1e8877fbafa912812b5e89b63d0517cdc82b0534e5424ed0700" }, "downloads": -1, "filename": "Stetl-1.0.9.tar.gz", "has_sig": false, "md5_digest": "ce62b97640bbe91282c4dcc9c61af14d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6224899, "upload_time": "2016-06-17T16:21:22", "url": "https://files.pythonhosted.org/packages/99/73/f70e8ab002d4cd94a0e6bf4dd0cc0d243fa7b02ff74176b4751f656c7e4c/Stetl-1.0.9.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "7889124f280bbfbafe9c6b387e5b8f75", "sha256": "ba09a23eafc12e06b038108ee75c7d49fa71ed424b792704a1f383a619805132" }, "downloads": -1, "filename": "Stetl-1.1.tar.gz", "has_sig": false, "md5_digest": "7889124f280bbfbafe9c6b387e5b8f75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6281144, "upload_time": "2017-11-07T15:19:24", "url": "https://files.pythonhosted.org/packages/59/0f/18103ba4c58da31371e090d9c053fe9bfaa013469f6c3f0f58b7b9be1371/Stetl-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "69f6dd368bef2956733ec4c66eec40eb", "sha256": "03af742ac98412a2ddd2f61f009258d7221387da0b1ca99315fc905788723342" }, "downloads": -1, "filename": "Stetl-1.2.tar.gz", "has_sig": false, "md5_digest": "69f6dd368bef2956733ec4c66eec40eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6294747, "upload_time": "2018-07-07T12:37:46", "url": "https://files.pythonhosted.org/packages/20/2f/b5e5d6ec9ff30991354a38c07873a4a5215887f586994f91a123ca81cd21/Stetl-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "b12675f0fd47eb2f640fd7c97edb92e2", "sha256": "f0a794221e0f654429a031618bf7f9a9b0f0a861ec94b00f2f92961e6137602d" }, "downloads": -1, "filename": "Stetl-1.3.tar.gz", "has_sig": false, "md5_digest": "b12675f0fd47eb2f640fd7c97edb92e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6297123, "upload_time": "2019-03-20T12:00:36", "url": "https://files.pythonhosted.org/packages/c2/f8/583bb301918537080763469d5942f806e4d2beef5b28c3bde288b0864142/Stetl-1.3.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "4b6788ed9a61d017717826831e287c2a", "sha256": "eab16886d75c0b630ef5fa28831f8426512f921cebc24438a20b167069c64d71" }, "downloads": -1, "filename": "Stetl-2.0.tar.gz", "has_sig": false, "md5_digest": "4b6788ed9a61d017717826831e287c2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6298074, "upload_time": "2019-04-11T14:51:49", "url": "https://files.pythonhosted.org/packages/9e/2c/436369a4fb727da5c7e9ee2424d3326631ba82b7bb1c206ea2598e896d34/Stetl-2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4b6788ed9a61d017717826831e287c2a", "sha256": "eab16886d75c0b630ef5fa28831f8426512f921cebc24438a20b167069c64d71" }, "downloads": -1, "filename": "Stetl-2.0.tar.gz", "has_sig": false, "md5_digest": "4b6788ed9a61d017717826831e287c2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6298074, "upload_time": "2019-04-11T14:51:49", "url": "https://files.pythonhosted.org/packages/9e/2c/436369a4fb727da5c7e9ee2424d3326631ba82b7bb1c206ea2598e896d34/Stetl-2.0.tar.gz" } ] }