{ "info": { "author": "Oliver Bristow", "author_email": "github+pypi@oliverbristow.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Modello\nThis project aims to explore symbolic modeling with object orientated programming. The heavy lifting is done by the [sympy](https://www.sympy.org/en/index.html) library. This module just provides a class to derive models from.\n\nAn example based on `examples/geometry.py`:\n```python\nfrom modello import InstanceDummy, Modello\nfrom sympy import sqrt\n\n\nclass RightAngleTriangle(Modello):\n a = InstanceDummy(\"a\", real=True, positive=True)\n b = InstanceDummy(\"b\", real=True, positive=True)\n c = sqrt(a**2 + b**2)\n\n\nT = RightAngleTriangle(\"T\", a=3, b=4)\nassert T.c == 5\nT = RightAngleTriangle(\"T\", b=4, c=5)\nassert T.a == 3\n```\n\nThe best place to see how this can be used is to look in the examples directory, which still needs padding out.\n\nThe functionality is covered by tests in both `test_modello.py` and doctests+tests in the examples.\n\n\n## Installation\nThis can be installed using one of:\n```sh\n# using pipenv\npipenv install modello\n\n# using pip\npip install --user modello\n\n# using git+pipenv\npipenv install git+https://github.com/Code0x58/modello.git#egg=modello\n\n# using git+pip\npip install --user git+https://github.com/Code0x58/modello.git#egg=modello\n```\n\nCurrently this requires Python 3.6+ but the version requirements can drop a couple of minor versions easily if there is interest. Python 2.7 isn't planned to be supported as the Modello class relies on [PEP-3115](https://www.python.org/dev/peps/pep-3115/).\n\n\n## Development\nRun the tests and linting with `python setup.py test`. Pushes have the test suite run against them, and will also publish a release if tagged thanks to GitHub Actions. You can reproduce the Actions locally using [act](https://github.com/nektos/act), e.g. `TWINE_USERNAME= TWINE_PASSWORD= act`.\n\n## TODO:\n * elaborate on tests/examples\n * think about extending the functionality to allow for a more complete system of constraints, use the RightAngleTriangle example as a base\n * work out patterns for labels/names on symbols so they render nicely\n * for mypy, consider getting value from or removing it\n * implement a first attempt at nested models (named, rather than lists, which would be nice)\n * think about the possibility of symbolic (instance) dummies to allow live updates to system rather than modello instantiation being final\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Code0x58/modello/", "keywords": "symbolic modeling", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "modello", "package_url": "https://pypi.org/project/modello/", "platform": "", "project_url": "https://pypi.org/project/modello/", "project_urls": { "Homepage": "https://github.com/Code0x58/modello/" }, "release_url": "https://pypi.org/project/modello/0.1.0.post1/", "requires_dist": [ "sympy", "flake8-docstrings ; extra == 'test'", "flake8-isort ; extra == 'test'", "pytest-cov (>=2.6.1) ; extra == 'test'", "pytest-flake8 ; extra == 'test'", "pytest-mypy ; extra == 'test'", "pytest (>=4.1) ; extra == 'test'" ], "requires_python": ">=3.3", "summary": "sympy expressions in models", "version": "0.1.0.post1" }, "last_serial": 4746066, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e475b4f84986164a45b88e0e25fda18c", "sha256": "4162582c93b804cd5bd0fe005316d69367fb3f47ba692b3649d8510b873dd7e7" }, "downloads": -1, "filename": "modello-0.1.0-3-none-any.whl", "has_sig": false, "md5_digest": "e475b4f84986164a45b88e0e25fda18c", "packagetype": "bdist_wheel", "python_version": "3", "requires_python": ">=3.3", "size": 4176, "upload_time": "2019-01-26T17:24:07", "url": "https://files.pythonhosted.org/packages/9b/a4/3f9fd1ecf82c092f9903818a6fce31ea4030786341caddc8e31b3f8f78d2/modello-0.1.0-3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1ebf56cef89ecdebda0caaf4dd844b7", "sha256": "2403d677db2d53b3a3d8dffe11e22372dfb59e05617d43617d190789c17aa18a" }, "downloads": -1, "filename": "modello-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b1ebf56cef89ecdebda0caaf4dd844b7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 6083, "upload_time": "2019-01-26T17:24:09", "url": "https://files.pythonhosted.org/packages/30/d8/b76744f1656714821af258987cb5edee1dea0e5f83c4851bb4a6c11fff37/modello-0.1.0.tar.gz" } ], "0.1.0.post1": [ { "comment_text": "", "digests": { "md5": "632f5f395112187a30b5638b6570a829", "sha256": "63249434bc2d96c33acd886c06ed1c263e464a44143871ef50b36abf89a9c5ce" }, "downloads": -1, "filename": "modello-0.1.0.post1-3-none-any.whl", "has_sig": false, "md5_digest": "632f5f395112187a30b5638b6570a829", "packagetype": "bdist_wheel", "python_version": "3", "requires_python": ">=3.3", "size": 4453, "upload_time": "2019-01-27T13:15:08", "url": "https://files.pythonhosted.org/packages/09/f4/ba3f1b296fe3631e8b1869a0b4a6edc2e82165dae830e9dc5620755a0b53/modello-0.1.0.post1-3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0b0be9e0103080987033ee23ad08983", "sha256": "342753a51d7d02e4e6b581d53c6d6e74fe89a0cbfa709181ccad239f027bc3f9" }, "downloads": -1, "filename": "modello-0.1.0.post1.tar.gz", "has_sig": false, "md5_digest": "e0b0be9e0103080987033ee23ad08983", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 6747, "upload_time": "2019-01-27T13:15:10", "url": "https://files.pythonhosted.org/packages/74/50/1ae7008ac3864ffcecc8e87ef58c1a2991af2d5e5cc5637e63a644884015/modello-0.1.0.post1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "632f5f395112187a30b5638b6570a829", "sha256": "63249434bc2d96c33acd886c06ed1c263e464a44143871ef50b36abf89a9c5ce" }, "downloads": -1, "filename": "modello-0.1.0.post1-3-none-any.whl", "has_sig": false, "md5_digest": "632f5f395112187a30b5638b6570a829", "packagetype": "bdist_wheel", "python_version": "3", "requires_python": ">=3.3", "size": 4453, "upload_time": "2019-01-27T13:15:08", "url": "https://files.pythonhosted.org/packages/09/f4/ba3f1b296fe3631e8b1869a0b4a6edc2e82165dae830e9dc5620755a0b53/modello-0.1.0.post1-3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0b0be9e0103080987033ee23ad08983", "sha256": "342753a51d7d02e4e6b581d53c6d6e74fe89a0cbfa709181ccad239f027bc3f9" }, "downloads": -1, "filename": "modello-0.1.0.post1.tar.gz", "has_sig": false, "md5_digest": "e0b0be9e0103080987033ee23ad08983", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 6747, "upload_time": "2019-01-27T13:15:10", "url": "https://files.pythonhosted.org/packages/74/50/1ae7008ac3864ffcecc8e87ef58c1a2991af2d5e5cc5637e63a644884015/modello-0.1.0.post1.tar.gz" } ] }