{ "info": { "author": "Jeremy Crosen", "author_email": "jeremy.crosen@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development", "Topic :: Software Development :: Libraries" ], "description": "Dvent\n~~~~~\n\n**Dvent** is a minimal set of simple, immutable, and functional models and tools\nintended to support `Domain Driven Design`_ (DDD) and function as the\nsource-of-truth data model in a CQRS_ / `Event sourcing`_ architecture pattern.\n\nInstallation\n------------\n\n ::\n\n pip install dvent\n\nDvent is\n--------\nA library\n A set of tools from which to build rich solutions, not a solution which you\n may easily apply to an existing problem. It aims to guide your development\n of models that are robust, simple, scalable, easy to reason about, and easy\n to test. While opinionated about the manner in which you model event\n orchestration it is still up to you to implement that model.\n\nMinimal\n Only include what is necessary and eschew that which is not;\n allow for easy expansion and composition\n\nSimple\n Aim for simplicity over ease of use; this generally manifests in very\n explicit code with consistent naming, loose-coupling, composition, and no \"magic\"\n\nImmutable\n With help from the *excellent* pyrsistent_ library all data structures and\n patterns follow and reinforce immutable best-practices; so all state\n transitions require reassignment and all entities (Events, Commands,\n Aggregates) are hashable.\n\nFunctional\n Prefer functional patterns to classic OOP while retaining a style that is\n approachable for developers familiar with more classic Python idioms.\n\nFully Specified and Tested\n Dvent is developed with DDD itself and features living documentation in the\n form of Gherkin features. Long-term plans include implementation of multiple\n languages against the same specification.\n\nBeta Software\n While Dvent is currently in use in an enterprise-level setting, it is still\n provided as Beta software until further scaling and consistency guarantees are\n tested.\n\nDvent is not\n------------\nA framework\n Dvent implements no \"real-world\" or practical data persistence and because it\n knows nothing about your problem domain it does not attempt to provide a\n solution. Instead it aims to guide your development of models that are robust,\n simple, scalable, easy to reason about, and easy to test. For something more\n fully-featured and \"out-of-the-box\" take a look at the excellently documented\n eventsourcing_ project which implements many of the same (and more) patterns.\n\nUsage\n-----\n**Coming Soon - for now check out the sample notebook(s)!**\n\nExploring\n---------\nDvent includes integration with the Jupyter_ project via a docker image. To use the notebook(s) you'll need docker version :code:`17.09.0+` and can simply run\n\n ::\n\n DVENT_JUPYTER_TYOKEN= docker-compose up -d dvent-notebook\n\n*Note: this will download and build the images which may require a good internet connection*\n\nThen in your browser visit `your personal notebook `_, enter your\npassword/token from above, browse to the \"notebooks\" folder, and open any you like.\n\nTesting\n-------\nAll tests are currently done via behave_ and gherkin feature files. To run the test\nsuite you can use docker via :code:`docker-compose run --rm dvent-test`\n\nWhy make \"Dvent\"?\n-----------------\nI was leading a team at Discogs_ building a new \"greenfield\" project which needed a basic\nset of event-sourcing models which were immutable, unopinionated about implementation\ndetails, and enabled basic functional patterns. I couldn't find anything that quite\nfit the need, so I made one over an intense weekend and we've been using it without\nany major modifications for over 15 months as of release :code:`0.1.0` (May 2018).\n\nIt's very plausible that without Discogs_ I would never have written Dvent and even so not\nconsidered it as vialble enterprise-level software. I consider it the birthplace and indirect\nsponsor of the project.\n\nWhy the name \"Dvent\"?\n---------------------\nAn *extreme* portmanteau of:\n\n- **Domain Driven Design**\n- Discogs_\n- **Event**\n\nObilgatory `naming things`_ is hard reference ;)\n\nSpecial Thanks\n--------------\n- Discogs_ and my team members (you know who you are)!\n- The excellent pyrsistent_ library which makes working with data structures in\n Python almost as joyful as in Clojure\n- `Greg Young`_ for his many helpful talks, posts, etc. which inform much of this\n library's patterns\n- `Rich Hickey`_ and the broader Clojure_ community for the inspiration in\n building practical, immutable, functional solutions\n\n.. _Domain Driven Design: https://en.wikipedia.org/wiki/Domain-driven_design\n.. _CQRS: https://en.wikipedia.org/wiki/Command%E2%80%93query_separation#Command_query_responsibility_segregation\n.. _Event sourcing: https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing\n.. _Discogs: https://www.discogs.com\n.. _pyrsistent: https://github.com/tobgu/pyrsistent\n.. _eventsourcing: https://github.com/johnbywater/eventsourcing\n.. _naming things: https://martinfowler.com/bliki/TwoHardThings.html\n.. _Greg Young: https://twitter.com/gregyoung\n.. _Rich Hickey: https://twitter.com/richhickey\n.. _Clojure: https://clojure.org\n.. _Jupyter: https://jupyter.org/index.html\n.. _behave: https://github.com/behave/behave", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jcrosen/dvent", "keywords": "eventsourcing event sourcing ddd domain driven design immutable functional", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "dvent", "package_url": "https://pypi.org/project/dvent/", "platform": "", "project_url": "https://pypi.org/project/dvent/", "project_urls": { "Homepage": "https://github.com/jcrosen/dvent" }, "release_url": "https://pypi.org/project/dvent/0.1.1/", "requires_dist": null, "requires_python": ">=3.4", "summary": "Simple, immutable, functional models for domain driven design with event sourcing", "version": "0.1.1" }, "last_serial": 3881753, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "62a51c1d0bae3d0152c3170787c3db49", "sha256": "32ec07ecb3fec2c4ea6f6af782fa5f101c58235a9fd6898ea6e761a04c2f30fe" }, "downloads": -1, "filename": "dvent-0.1.0.tar.gz", "has_sig": false, "md5_digest": "62a51c1d0bae3d0152c3170787c3db49", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 10158, "upload_time": "2018-05-20T21:45:03", "url": "https://files.pythonhosted.org/packages/b1/30/10b390859bbd88fd35a5b6b0d7c5ed12c742be2b882aa57973afabffa18c/dvent-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9c4e10e00004ba00127de90f935669e1", "sha256": "08515d748f7c2a4cf9598a747207d778256c59dab11853fdc5143e539e519812" }, "downloads": -1, "filename": "dvent-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9c4e10e00004ba00127de90f935669e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 10170, "upload_time": "2018-05-20T23:45:45", "url": "https://files.pythonhosted.org/packages/bf/70/55d3c4d2c0124674c20f03a90d3ea3de93415f5e4f0924435128abf603ca/dvent-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9c4e10e00004ba00127de90f935669e1", "sha256": "08515d748f7c2a4cf9598a747207d778256c59dab11853fdc5143e539e519812" }, "downloads": -1, "filename": "dvent-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9c4e10e00004ba00127de90f935669e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 10170, "upload_time": "2018-05-20T23:45:45", "url": "https://files.pythonhosted.org/packages/bf/70/55d3c4d2c0124674c20f03a90d3ea3de93415f5e4f0924435128abf603ca/dvent-0.1.1.tar.gz" } ] }