{ "info": { "author": "Wittle South Ventures, LLC", "author_email": "service@wittlesouth.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Software Development :: Libraries" ], "description": "# smoacks\nSimple Microservices with OpenAPI, Connexion, Kubernetes, and SQLAlchemy\n\nThis library will generate a microservice application intended for deployment\nin a Kubernetes environment, based on an OpenAPI 3.0 schema. It will work\nfrom the schema to create API endpoints and a SQLAlchemy data model.\n\nThe microservice application will include a set of scripts to set up\nenvironment variables used by the application, yaml files to deploy the\napplication as a container, a Dockerfile to package the service as a container,\nas well as generated source files. See [development environment](https://github.com/Wittle-South-LLC/smoacks/blob/master/DEV_ENVIRONMENT.md)\nfor an explanation of the development environment assumptions.\n\n## Deployment Dependencies for Generated Code\n\n- Flask for HTTP request handling\n- flask_jwt_extended for securing API endpoints\n- Connexion for RESTful API validation & routing\n- SQLAlchemy for database persistence\n\n### Dependencies in development for generating code\n- Jinja2 for code generation from internal templates; not at runtime\n- PyYAML for configuration file; \n\n## Specialized SMOACKS tags for OpenAPI 3.0 specs\n\nThe following tags have special meanings for SMOACKS application generation\n\n### Data Model Object Tags\n- Schema Tags\n - **x-smoacks-create** - String naming a data model object to be created from\n the schema object to which this tag is attached\n - **x-smoacks-extended** - String naming a data model object that the schema\n object to which this tag is attached should extend with additional attributes\n beyond those provided in the schema tagged with x-smoacks-create\n - **x-smoacks-fk-relationships** - Defines SQLAlchemy relationships to create\n for the data model object. This is a structure that provides the relationship\n name, table, field, and optionally a cascade setting.\n - **x-smoacks-api-verb-param** - Identifies a schema object that should be the\n parameter for an API verb for the object specified by **x-smoacks-object**\n on the same schema. Applies only to POST, SEARCH, GET, PUT verbs.\n - **x-smoacks-api-verb-resp** - Identifies a schema object that should be the\n response for an API verb for the object specified by **x-smoacks-object**\n on the same schema. Applies only to SEARCH and GET verbs.\n - **x-smoacks-object** - Identifies the data model object associated with a\n schema. Ignored if **x-smoacks-create** or **x-smoacks-extended** is attached\n to the same schema. \n - **x-smoacks-rbac-controlled** - Identifies a table that has an associated\n RBAC authorization table. The value of this setting should be the name of the\n authorization table.\n- Property Tags\n - **x-smoacks-model-id** - Boolean flagging a property in the schema as the\n primary key for the data model object set in the schema\n - **x-smoacks-foreign-key** - String identifying the table to which this\n property is a foreign key\n\n### Code Generation Hint Tags\n- **x-smoacks-search-field:** - Boolean flagging a field in the model as being\n the one that the default search API implementation should query against \n- **x-smoacks-edit-unit-test:** - Identifies field to be changed during unit\n testing of edit API, value replaces example for the property with this tag\n- **x-smoacks-test-data** - Flag to identify whether test data should be\n generated for this object (This likely shouldn't be a smoacks attribute,\n I think it is only used by openapi-rim-app)\n\nVersion History\n---------------\n\n* 0.2.10 - Adds ability to merge multiple API specs into one\n* 0.2.9 - Generates CLI utilities and API client objects\n* 0.2.8 - Support MUAM style RBAC in default unit tests. See [rbac support](https://github.com/Wittle-South-LLC/smoacks/blob/master/RBAC_SUPPORT.md)\n* 0.2.7 - Support cascading database operations on relationships\n* 0.2.6 - Support for assigning custom schemas to specific verbs\n* 0.2.5 - Support for hydration endpoint\n* 0.2.4 - Support for model relationships\n* 0.2.3 - Unit test coverage for all generated endpoints\n* 0.2.2 - Allows customization of data model and API objects\n* 0.2.1 - Supports unit testing authenticated endpoints\n* 0.2.0 - First version generating structure, code, and working unit test\n* 0.1.X Series - Incremental steps to first working version\n\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/wittlesouth/smoacks", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "smoacks", "package_url": "https://pypi.org/project/smoacks/", "platform": "", "project_url": "https://pypi.org/project/smoacks/", "project_urls": { "Homepage": "https://github.com/wittlesouth/smoacks" }, "release_url": "https://pypi.org/project/smoacks/0.2.10/", "requires_dist": [ "connexion", "coverage", "flask-jwt-extended", "jinja2", "nose", "openapi-spec-validator", "PyYAML", "SQLAlchemy" ], "requires_python": "", "summary": "Simple Microservices with OpenAPI, Connexion, Kubernetes, and SQLAlchemy", "version": "0.2.10" }, "last_serial": 5403854, "releases": { "0.2.10": [ { "comment_text": "", "digests": { "md5": "833998292d4df490e0a36caecec8a569", "sha256": "cb7b273c4066145bcc20c58d4592a50ba14022cba9710d70c10db48a6a0b7836" }, "downloads": -1, "filename": "smoacks-0.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "833998292d4df490e0a36caecec8a569", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55406, "upload_time": "2019-06-15T12:09:40", "url": "https://files.pythonhosted.org/packages/52/63/9b1c17b8bd516172f8d6debac9e83436ea17536276085f531b2f856b8009/smoacks-0.2.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa520bad88e9ff810261994ebe9bf752", "sha256": "83d651959464929fb98835a770671e3dab74c16f2c7c7f42a134980e655dbec7" }, "downloads": -1, "filename": "smoacks-0.2.10.tar.gz", "has_sig": false, "md5_digest": "aa520bad88e9ff810261994ebe9bf752", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38651, "upload_time": "2019-06-15T12:09:42", "url": "https://files.pythonhosted.org/packages/72/14/f650310ed659df11f4254a639c15dc3075ae75e4dcfa8e5f807fa26953db/smoacks-0.2.10.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "de17b17c5520779fc6a015eb82c695ce", "sha256": "574d87e264b03a68fd8bb32aebf44baad26c3ae2082d3efd479d82add2336758" }, "downloads": -1, "filename": "smoacks-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "de17b17c5520779fc6a015eb82c695ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39614, "upload_time": "2019-05-28T00:33:55", "url": "https://files.pythonhosted.org/packages/32/59/2d30b3739c0d8fbaa3447a43641d6b6dd7931954f4e699d75d9c7b632007/smoacks-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "628d8bbc4270e1c8d44e2fc753a829e6", "sha256": "7982b963ec574557c35bd121f3b8100b660de2310649e85d3b9d84adae915ba9" }, "downloads": -1, "filename": "smoacks-0.2.4.tar.gz", "has_sig": false, "md5_digest": "628d8bbc4270e1c8d44e2fc753a829e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25824, "upload_time": "2019-05-28T00:33:57", "url": "https://files.pythonhosted.org/packages/bb/5b/d0bf3b934706cd90ba20b16437d2b290b6c24c56678379b0b5722e706f3e/smoacks-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "f74988fa84deb721b63baf62d5099477", "sha256": "5960d0f7ef7a916b55673b49e70b304562fe0c4be849cad313815d4fa43eb9c8" }, "downloads": -1, "filename": "smoacks-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f74988fa84deb721b63baf62d5099477", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43084, "upload_time": "2019-06-01T18:25:16", "url": "https://files.pythonhosted.org/packages/a3/9f/80eec615616b049084dd8b35358e51de6103e393b6ab94b4ac92c4e40a53/smoacks-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d851c3f3beda779b10b7da81aaf10c7", "sha256": "6f67e7ffec28547f54fd700179d782d72929f192ea5b662d85108c5e4cabb412" }, "downloads": -1, "filename": "smoacks-0.2.5.tar.gz", "has_sig": false, "md5_digest": "7d851c3f3beda779b10b7da81aaf10c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28770, "upload_time": "2019-06-01T18:25:18", "url": "https://files.pythonhosted.org/packages/75/8a/9d3731e53344b36527512c6774fe1dd7af0d49903ec6f4e772937176c765/smoacks-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "5637358f6e8dccd62d94d95bc9d28f07", "sha256": "79b6216d5b0dfba0db1f44209c3eab62ff7d6fdc85f7ebd25107b384ab6cc762" }, "downloads": -1, "filename": "smoacks-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "5637358f6e8dccd62d94d95bc9d28f07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44159, "upload_time": "2019-06-02T03:40:26", "url": "https://files.pythonhosted.org/packages/9f/1c/24fcc3b59e88e4d0492ab2b8e9fc3b0be91c7ca9a04d3841bc283a2cb5a3/smoacks-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b14f032e8c716f644f9d7a689c7d46f", "sha256": "a5c560be24bd0b19e6a6046b155cfea667ee511aaf9290229961a8d996cda07a" }, "downloads": -1, "filename": "smoacks-0.2.6.tar.gz", "has_sig": false, "md5_digest": "2b14f032e8c716f644f9d7a689c7d46f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29978, "upload_time": "2019-06-02T03:40:28", "url": "https://files.pythonhosted.org/packages/35/19/40a4ade6809f0147f42f1a808dc15dd248a3ffc47050ad1d9e3edf97b233/smoacks-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "6e344581835743259478a13cd1718ab1", "sha256": "fdb22a889ff90a962ec93d18ab2660ed05d3b72500b0b4d1045ba36ab36096e8" }, "downloads": -1, "filename": "smoacks-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "6e344581835743259478a13cd1718ab1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44343, "upload_time": "2019-06-02T11:26:50", "url": "https://files.pythonhosted.org/packages/df/6b/e6ad3416045a1a1a7e0b6ff2099b5e7a56563041bd371c13226b243345f0/smoacks-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d3ee495204f6fd5fd849b1b5e2806580", "sha256": "23e79b2210b03e0233eb4ac9e680aef3d5964200df13d579326470c806135c96" }, "downloads": -1, "filename": "smoacks-0.2.7.tar.gz", "has_sig": false, "md5_digest": "d3ee495204f6fd5fd849b1b5e2806580", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30214, "upload_time": "2019-06-02T11:26:51", "url": "https://files.pythonhosted.org/packages/13/be/9162ce89a089147a995a9098993bb8f5a06c5000b728f9ea25dfdc434345/smoacks-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "38522e9bf4e83eddebf8989a0de660c6", "sha256": "6969f5e3c47069c117e8deb111dedc464110445af57fc7007dd38fc1bd267ab7" }, "downloads": -1, "filename": "smoacks-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "38522e9bf4e83eddebf8989a0de660c6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45452, "upload_time": "2019-06-04T03:03:29", "url": "https://files.pythonhosted.org/packages/1c/70/a5a340babd32733769d5eb3a4ba690b15df2db042d66597ab0ce0db22117/smoacks-0.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "397a0125f9a15ca987696f28ed66f305", "sha256": "fd38be9fb74437a13036ce2586a3696240f27dfb92ba859caf235720af419317" }, "downloads": -1, "filename": "smoacks-0.2.8.tar.gz", "has_sig": false, "md5_digest": "397a0125f9a15ca987696f28ed66f305", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31860, "upload_time": "2019-06-04T03:03:31", "url": "https://files.pythonhosted.org/packages/f1/c8/649423cebee167fc3294fd324530a0bd71a05be5ec34e8cd5fd4b9df2fc5/smoacks-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "915ec7057de6b1aac8a67f30f48ed44b", "sha256": "eaedce870a433c7c813c7afff6b762dcc7e33f6939c1509e56abe8b5c048655a" }, "downloads": -1, "filename": "smoacks-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "915ec7057de6b1aac8a67f30f48ed44b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 53883, "upload_time": "2019-06-13T00:40:57", "url": "https://files.pythonhosted.org/packages/3c/52/052b8832bb4f63a7c9652f365651cb8f111fc4f15aef4881730e44cc2a04/smoacks-0.2.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e8399886128bf5fecda17df50a9ce30", "sha256": "a9307b673f88defaa558a9b680220230d233cd8f927892832c605b6c14e703f0" }, "downloads": -1, "filename": "smoacks-0.2.9.tar.gz", "has_sig": false, "md5_digest": "4e8399886128bf5fecda17df50a9ce30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37567, "upload_time": "2019-06-13T00:40:58", "url": "https://files.pythonhosted.org/packages/81/4d/837ff3450d02a285fa2eff96ba36ab76142510f6d6fddcfe080b571e2d38/smoacks-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "833998292d4df490e0a36caecec8a569", "sha256": "cb7b273c4066145bcc20c58d4592a50ba14022cba9710d70c10db48a6a0b7836" }, "downloads": -1, "filename": "smoacks-0.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "833998292d4df490e0a36caecec8a569", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55406, "upload_time": "2019-06-15T12:09:40", "url": "https://files.pythonhosted.org/packages/52/63/9b1c17b8bd516172f8d6debac9e83436ea17536276085f531b2f856b8009/smoacks-0.2.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa520bad88e9ff810261994ebe9bf752", "sha256": "83d651959464929fb98835a770671e3dab74c16f2c7c7f42a134980e655dbec7" }, "downloads": -1, "filename": "smoacks-0.2.10.tar.gz", "has_sig": false, "md5_digest": "aa520bad88e9ff810261994ebe9bf752", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38651, "upload_time": "2019-06-15T12:09:42", "url": "https://files.pythonhosted.org/packages/72/14/f650310ed659df11f4254a639c15dc3075ae75e4dcfa8e5f807fa26953db/smoacks-0.2.10.tar.gz" } ] }