{ "info": { "author": "Brian Romanchuk", "author_email": "brianr747@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Other/Nonlisted Topic" ], "description": "SFC Models Package Introduction\n===============================\n\nIntroduction\n------------\n\nCreation and solution of stock-flow consistent (SFC) models. Currently under construction.\n\nThis framework generates equations algorithmically based on the connections between Sector and\nModel objects. These equations are then solved using an iterative solution. The objective is that\ncomplex models with dozens of equations can be generated with a few lines of high level code. The\nuser can then see how the equations arise from the sector behaviour.\n\nFor another take on SFC models in Python see: https://github.com/kennt/monetary-economics\n\nDeveloped under Python 3.4, and is compatible with Python 2.7.\n\nThere are some installation instructions found in \"InstallationNotes.rst\"\n\nStatus Version 1.0.0\n--------------------\n\nThis version of *sfc_models* is the one that is associated with the upcoming guide (estimated\nrelease date is October 2017). The framework is hardly complete, but it is possible to use\nit to create some relatively complex models. Further extensions will probably have to be\naimed at extending towards research topics of interest. The existing set of examples (and\nthe guide) should offer a solid starting point for other researchers.\n\nThere have been very few changes from version 0.5.0. Code cleanup may show up in minor\nversions 1.0.x.\n\nStatus: Version 0.5.0\n---------------------\n\n(Section added on 2017-08-03.)\n\nNo major new functionality is expected to be added before Version 1.0. The only planned changes are beefing up\nexample code, and any fixes that need to be put into place.\n\nAn introductory text is nearing completion. This document is aimed to be the user documentation; the code documentation\nembedded in the code base is just reference and implementation details.\n\nVersion 0.5.0 Description Syntax Change\n---------------------------------------\n\nIn Version 0.5, the constructor order for Country and Sector objects has been changed.\nThe long_name (or description) variable was demoted to optional. It will now\nbe possible to create objects with just two arguments\n\n::\n\n ca = Country(model_object, 'CA')\n\ninstead of (old syntax)\n\n::\n\n ca = Country(model_object, 'Canada', 'CA')\n\nIn my view, this is a major quality of life improvement for future users, at the cost of breaking\nwhat I assume is still a small base of external user's code.\n\nRoad To Version 1.0\n-------------------\n\nAnother text file \"RoadToVersion1.rst\" describes the functionality that is aimed to be\nincorporated in Version 1.0 of *sfc_models*.\n\nVersion 0.4.0 is being released on 2017-03-06. This version\ninvolves a major refactoring of the code, and has changed behaviour.\n\n- The framework now injects a double underscore ('__') instead of a single one ('_') between\n the sector FullCode and the local variable name. For example, the household financial assets\n are now 'HH__F' instead of 'HH_F'. Furthermore, the creation of local variables with '__' is\n blocked. This means that the presence of '__' in a variable name means that it is the full name\n of a variable; otherwise it is a local variable. (Or perhaps a global variable like 't'.)\n- An Equation class was created. It has replaced the strings held in the Equations member of\n the Sector class. It allows us to add terms to equations, so that the financial assets and\n income equations (see below) are always well-defined. This Equation class should be used by\n the solver, but it is not yet incorporated; there is no guarantee that such a change will be\n done before version 1.0 release.\n- A pre-tax income variable ('INC') was created. It is normally equal to cash inflows minus\n outflows, but there are some exceptions. (Household consumption, business dividends, etc.)\n The sectors in the framework do their best to classify cash flows as whether they affect income,\n but users may need to create exceptions (or additions) manually. (Previously, the income was\n ad hoc.)\n- A new module - *sfc_models.sector* was created; it pulled the Sector class out of the models\n module. The existing *sectors.py* was renamed to *sector_definitions.py*. My old\n example code that did \"import \\*\" from *sfc_models.models* no longer works. (?)\n\nThere are no *major* refactorings now expected to take place before version 1.0 release.\n**(Update: the previous statement turned out to be dead wrong; see the discussion of\nthe description change above.)** As a result, the project status will be changed to\n'beta' in Version 0.4. Methods that are not expected to be used by people who are not\ncreating new classes will have '_' added in front of their name (so they disappear from\nhelp()), but this is viewed as acceptable. Otherwise, variables and methods will only be\nrenamed if they are obviously not following a standard pattern.\n\nSub-package: gl_book\n--------------------\n\nThe sub-package sfc_models.gl_book contains code to generate models from the text \"Monetary Economics\"\nby Wynne Godley and Marc Lavoie. The test process uses target output calculated elsewhere to\nvalidate that *sfc_models* generates effectively the same outcome. It should be noted that\n*sfc_models* has to approach equation-building differently than humans, and so there are more\nequations (and are labelled very differently). One needs to map the variables in \"Monetary Economics\"\nto those generated by *sfc_models* to validate that they get the same output.\n\nThe previously mentioned GitHub package by \"kennt\" consists of well-documented solutions of those models in IPython\nnotebooks.\n\nModels implemented (objects here generally use the same name name as Monetary Economics):\n\n- **Chapter 3** Model SIM, SIMEX\n- **Chapter 4** Model PC\n- **Chapter 6** Model REG (two versions here; REG and REG2). (I have a variant of model OPENG as well.)\n\nSolution Method\n---------------\n\nThe single-period solution of a SFC model relies on market-clearing (not necessarily relying on price adjustments,\nunlike mainstream models). Market clearing relies on solving many simultaneous equations.\n\nAt present, the machine-generated code uses an iterative approach to solve *x = f(x)* (where *x* is a vector).\nWe just passing an initial guess vector through *f(x)* and hope it converges.\n\nThis works for the simple models tested so far. The objective is to augment this by a brute-force search technique that\nrelies upon economic intuition to reduce the dimension of the search space. This will be needed for flexible\ncurrency models.\n\nDependencies\n------------\n\n- *matplotlib*: for plots in *examples*. (Essentially optional, may be required later\n if the solver algorithm needs beefing up.)\n\nDocumentation will be placed in the \"docs\" directory.\n\nExamples are in the *examples* sub-package. Currently, in the form of scripts in *examples.scripts*; will develop a\ndeployment function later.\n\nThe test coverage on the \"master\" branch is 100%, and the objective is to hold that standard. There are some\nsections that are effectively untestable, and there appears to be issues with some lines that are undoubtedly hit\nas being marked as unreached; they have been eliminated with::\n# pragma: no cover\n\nChange Log\n----------\n\n- **1.0.3** Fix to equation parsing for Python 3.7.\n- **1.0.0** Locking down the version associated with the guide.\n- **0.5.0** Change to sector constructor order, examples development.\n- **0.4.3** install_examples() GUI added. Python 2.7 fixes.\n- **0.4.2** Small changes, import from *sfc_models.objects* supported.\n- **0.4.1** Fixed packaging problem from Version 0.4.0.\n- **0.4.0** *Packaged incorrectly* Multi-file Logger, initial (constant) equilibrium calculation, markets\n with multiple supply sources, custom functions. Equation objects used in model creation.\n **Changed variable naming convention, eliminated the Sector.Equations member.** Considerable\n refactoring, methods for developer use have been hidden with leading underscore. Example code\n cleanup.\n- **0.3.0** Rebuilt the solver, heavy refactoring, example installation, Godley & Lavoie example framework.\n- **0.2.1** Cleaned up examples layout.\n- **Version 0.2** (Should have been 0.2.0 - oops)\n First deployment of package to PyPi. Base functionality operational, little documentation.\n- Earlier versions: Only available as source on Github.\n\n\nLicense/Disclaimer\n------------------\n\nCopyright 2016-2017 Brian Romanchuk\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/brianr747/SFC_models", "keywords": "economics,SFC models,stock-flow consistent models", "license": "", "maintainer": "", "maintainer_email": "", "name": "sfc-models", "package_url": "https://pypi.org/project/sfc-models/", "platform": "", "project_url": "https://pypi.org/project/sfc-models/", "project_urls": { "Homepage": "https://github.com/brianr747/SFC_models" }, "release_url": "https://pypi.org/project/sfc-models/1.0.3/", "requires_dist": [ "matplotlib (>=2.0) ; extra == 'charts'" ], "requires_python": "", "summary": "Stock-Flow Consistent (SFC) model generation", "version": "1.0.3" }, "last_serial": 5873980, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "16dcdbd9f0e0c2c41b7e62cb137021e5", "sha256": "72e8076f6c3907f864f60b6c8aa24bc48338b180f1eeb27912062e01d180f224" }, "downloads": -1, "filename": "sfc_models-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "16dcdbd9f0e0c2c41b7e62cb137021e5", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 22709, "upload_time": "2016-10-21T19:49:28", "url": "https://files.pythonhosted.org/packages/02/e9/f77c81ff091db056641f90fb1ca2989c92fecd8c03bed88ba90a24c11ffc/sfc_models-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c9a40b693519db3e2b3d2baa3d011b1", "sha256": "0fa8a925e674c41eabb9e9173329eb5e6359a7c61f112b6025ca8b57388725c9" }, "downloads": -1, "filename": "sfc_models-0.2.zip", "has_sig": false, "md5_digest": "3c9a40b693519db3e2b3d2baa3d011b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47152, "upload_time": "2016-10-21T19:49:10", "url": "https://files.pythonhosted.org/packages/b1/b1/03e34a6acd9ae60179028a71034c67a96a6e85aec27c2c3097656c14b7f0/sfc_models-0.2.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "8f343c154cc96169d8113f5d5b930f8c", "sha256": "e3c7a6913c809eee1f4cefaa54e7c1519556efc5ee4a0742008d10aaa80fcda6" }, "downloads": -1, "filename": "sfc_models-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8f343c154cc96169d8113f5d5b930f8c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35589, "upload_time": "2016-10-22T23:02:39", "url": "https://files.pythonhosted.org/packages/53/b1/3a538150ed96661320e72b4879c090db1662000477e9e3d93d10e5badadc/sfc_models-0.2.1-py2.py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2070748358f115e99c24ad6bc066f4e3", "sha256": "97bab10073c9b40f59f73ad5593a915787db9a69be02f60a6690f18a6dad6d52" }, "downloads": -1, "filename": "sfc_models-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2070748358f115e99c24ad6bc066f4e3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 86931, "upload_time": "2017-02-10T19:16:35", "url": "https://files.pythonhosted.org/packages/78/e2/b0406be7ee81c4428fef66da1dc4790cdfe96b90e3d2c37ea287a2f92408/sfc_models-0.3.0-py2.py3-none-any.whl" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "376eac85c6bed6010430796cfad38980", "sha256": "c2b3d3a696916b6ca852d893ee1b338a3efe131609a93085453ac88c8747469c" }, "downloads": -1, "filename": "sfc_models-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "376eac85c6bed6010430796cfad38980", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 123716, "upload_time": "2017-03-06T16:00:43", "url": "https://files.pythonhosted.org/packages/87/78/1f9fffec94ebd7b5792e504f432ff97e80b201f4486235332e07daa8ed36/sfc_models-0.4.0-py2.py3-none-any.whl" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "12038fc46488e236b8d70397ebed9c25", "sha256": "887eca2f407ca319624f271866567c02e18df931469de9ae215bd611b1768ee6" }, "downloads": -1, "filename": "sfc_models-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "12038fc46488e236b8d70397ebed9c25", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 123495, "upload_time": "2017-03-06T20:39:28", "url": "https://files.pythonhosted.org/packages/00/67/aa8b4599067d2ff2d858846cf0756d8a7fe9d7b4adcc838b622bcf41025a/sfc_models-0.4.1-py2.py3-none-any.whl" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "be45fa9467ca8def49d157d0e1b5a3ed", "sha256": "b2d66dd56d9f0dfd5fdf8b6a67664e801f061ec48659014239f715d3cabed217" }, "downloads": -1, "filename": "sfc_models-0.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "be45fa9467ca8def49d157d0e1b5a3ed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 126402, "upload_time": "2017-03-08T15:16:36", "url": "https://files.pythonhosted.org/packages/d6/57/16eb44765dbebe07ec4bb2f3268a8bb54bcec8773d6f305b01536e3cec71/sfc_models-0.4.2-py2.py3-none-any.whl" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "e91317d03539048bee9a1bca3cb1f243", "sha256": "1aeca1b0366f821ffde0360653f7a27dbd2c6826ab1d03867f7f1d6ea448a470" }, "downloads": -1, "filename": "sfc_models-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e91317d03539048bee9a1bca3cb1f243", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 127818, "upload_time": "2017-03-10T20:32:45", "url": "https://files.pythonhosted.org/packages/44/e8/dcf4012dae5c862f41671a34a41e38c7fe2293ca20edc92f700c82636a19/sfc_models-0.4.3-py2.py3-none-any.whl" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "9677f58a1ff7447c847aa1e0d44afb9a", "sha256": "6ece95fbff3b6adb5feea903c9606982063e176bf1c307d755db0a9e8a3b4a1a" }, "downloads": -1, "filename": "sfc_models-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9677f58a1ff7447c847aa1e0d44afb9a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 150728, "upload_time": "2017-08-31T18:42:28", "url": "https://files.pythonhosted.org/packages/e0/64/691158e7be56640836b501e6d3697a625b1dbdf16808e839af277d48ee9f/sfc_models-1.0.0-py2.py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "ec37ac146718c35d3c4e22577411788d", "sha256": "fe9068acd31283cd025101bdf9904dd71a269ff95c132bdd40ef989328fc7f58" }, "downloads": -1, "filename": "sfc_models-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ec37ac146718c35d3c4e22577411788d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 152637, "upload_time": "2018-02-15T18:54:42", "url": "https://files.pythonhosted.org/packages/b7/91/c5bc68e90b4eb92cffd2a08508d6ae7147c441bb562fa00ac0538c29ae08/sfc_models-1.0.1-py2.py3-none-any.whl" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "3ba078875c228f90f03cbd2e776dc5a9", "sha256": "0a761211c9446f935d0ca27dec7bba5a1c09abce789eadc6f2c3f1f5eeec2278" }, "downloads": -1, "filename": "sfc_models-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3ba078875c228f90f03cbd2e776dc5a9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 120371, "upload_time": "2019-09-23T14:38:56", "url": "https://files.pythonhosted.org/packages/b3/10/af9b030f06e5443e09c8ee4fdeb5d9e25a8080d1db9e0cb96b30de5b6b4b/sfc_models-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a92fb64ded3d81512faa1bc5f7001401", "sha256": "e15bae479729f38d473951fdb4b1f2b06938e526c00bed788513012acfddfb0f" }, "downloads": -1, "filename": "sfc_models-1.0.3.tar.gz", "has_sig": false, "md5_digest": "a92fb64ded3d81512faa1bc5f7001401", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92553, "upload_time": "2019-09-23T14:38:59", "url": "https://files.pythonhosted.org/packages/5e/86/a46198ed0ec157daf72d9eac35cf2926ebff3a161253a14d35dca278e307/sfc_models-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3ba078875c228f90f03cbd2e776dc5a9", "sha256": "0a761211c9446f935d0ca27dec7bba5a1c09abce789eadc6f2c3f1f5eeec2278" }, "downloads": -1, "filename": "sfc_models-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3ba078875c228f90f03cbd2e776dc5a9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 120371, "upload_time": "2019-09-23T14:38:56", "url": "https://files.pythonhosted.org/packages/b3/10/af9b030f06e5443e09c8ee4fdeb5d9e25a8080d1db9e0cb96b30de5b6b4b/sfc_models-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a92fb64ded3d81512faa1bc5f7001401", "sha256": "e15bae479729f38d473951fdb4b1f2b06938e526c00bed788513012acfddfb0f" }, "downloads": -1, "filename": "sfc_models-1.0.3.tar.gz", "has_sig": false, "md5_digest": "a92fb64ded3d81512faa1bc5f7001401", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92553, "upload_time": "2019-09-23T14:38:59", "url": "https://files.pythonhosted.org/packages/5e/86/a46198ed0ec157daf72d9eac35cf2926ebff3a161253a14d35dca278e307/sfc_models-1.0.3.tar.gz" } ] }