{ "info": { "author": "Pascal Chambon", "author_email": "pythoniks@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: Unix", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "RSTRANSACTION\n================\n\nRstransaction is a python2/python3 toolbox to create transactional systems, for any kind of operations: in-memory, on filesystems, on remote storages...\n\nIt supports commits/rollbacks and savepoints.\n\nIt was never used in production, but is well tested, and easily extendable to support different kinds of behaviour : immediate or lazy actions, recording of operations to disk files or DBs in case of crash, auto-rollback on error or not...\n\n\nINSTALL\n------------\n\nUsing pip is recommended, although installing from a checkout of the repository (via setup.py) also works:\n\n::\n\n $ pip install rstransaction\n\n\nUSAGE\n---------\n\nYour best bet is to read the sources (especially tests).\n\nThe idea is to create \"atomic\" operations using `TransactionalActionAdapter`.\nEach of these operations knows how to operate, how to rollback itself, and also \nhow to preprocess its arguments so that they are unambiguous (ex. turn \nrelative file names into absolute ones).\n\nThese actions are then registered near a `TransactionalActionRegistry`.\n\nAn action recorder has to be chosen (the default one, `ActionRecorderBase`, \nsimply records actions in-memory, without persistence).\n\nA transaction processor (inheriting `TransactionBase`) is then instantiated, and \ngiven the action registry as well as the action recorder.\nThe default transaction processor, `InteractiveTransaction`, executes any operation \n(issued with tx_process_action()), immediately, so potential errors must be handled\naccordingly. But one could implement a transaction processor which delays all operations \nuntil commit time.\n\nTransaction steps can be set manually (with tx_commit(), tx_rollback(), savepoint methods..), but the best is to use\nthe transaction processor as a context manager (`with` keyword), so that full commit/rollback occur automatically on exit.\nThe \"tx_savepoint\" attribute of transaction processor can also be used as a context manager, only acting on a savepoint this time.\n\nA transaction processor automatically begins a new transaction, on commit or rollback, so it can be reused.\n\nNote that exceptions do not get swallowed by this system, even if an automatic rollback occurs.\n\nSubclasses of `TransactionFailure` are used to report errors linked to the transaction systemn, as exceptions.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pakal/rstransaction", "keywords": "", "license": "http://www.opensource.org/licenses/mit-license.php", "maintainer": "", "maintainer_email": "", "name": "RSTransaction", "package_url": "https://pypi.org/project/RSTransaction/", "platform": "any", "project_url": "https://pypi.org/project/RSTransaction/", "project_urls": { "Homepage": "https://github.com/pakal/rstransaction" }, "release_url": "https://pypi.org/project/RSTransaction/0.2/", "requires_dist": null, "requires_python": "", "summary": "Extendable transaction system, to build workflows with commit/rollback semantics.", "version": "0.2" }, "last_serial": 4714978, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "e0e5f35d362f54525fa0db941ee49e0d", "sha256": "5eb9554dddea04e37b7d4650d8e8c4376091ca92372fa65174c94484565ace38" }, "downloads": -1, "filename": "RSTransaction-0.1.tar.gz", "has_sig": false, "md5_digest": "e0e5f35d362f54525fa0db941ee49e0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11595, "upload_time": "2016-08-10T09:56:10", "url": "https://files.pythonhosted.org/packages/e4/c0/591c2f2adf5beda8db24b9fa7c9ec7969976828be4802167be40ddaa902d/RSTransaction-0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "28e8a085f2dc5d436a52028ecf137379", "sha256": "04ef69692f1fb6710f4c640b42527255f59b0393c421e283c54feee1fa35430b" }, "downloads": -1, "filename": "RSTransaction-0.1.zip", "has_sig": false, "md5_digest": "28e8a085f2dc5d436a52028ecf137379", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15798, "upload_time": "2016-08-10T09:56:07", "url": "https://files.pythonhosted.org/packages/c7/ca/0ccbaa6336120d8877eee89ce781f1e3b3579c1347ce23fa436fefe87788/RSTransaction-0.1.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "c986c57af225ecb77a1e4f7cd49d8179", "sha256": "8e1c4f9751d4a6a38531daade393a4af00cb41678fddf19913c42080c436f55c" }, "downloads": -1, "filename": "RSTransaction-0.2.tar.gz", "has_sig": false, "md5_digest": "c986c57af225ecb77a1e4f7cd49d8179", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11593, "upload_time": "2019-01-19T08:35:35", "url": "https://files.pythonhosted.org/packages/a1/8c/c0a1f4479348feb45f88b563136bbed9751f321d1b40f8dde48f62cb3e11/RSTransaction-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c986c57af225ecb77a1e4f7cd49d8179", "sha256": "8e1c4f9751d4a6a38531daade393a4af00cb41678fddf19913c42080c436f55c" }, "downloads": -1, "filename": "RSTransaction-0.2.tar.gz", "has_sig": false, "md5_digest": "c986c57af225ecb77a1e4f7cd49d8179", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11593, "upload_time": "2019-01-19T08:35:35", "url": "https://files.pythonhosted.org/packages/a1/8c/c0a1f4479348feb45f88b563136bbed9751f321d1b40f8dde48f62cb3e11/RSTransaction-0.2.tar.gz" } ] }