{ "info": { "author": "Michal Cokina, Miroslav Fedurco", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Astronomy" ], "description": "STellAr Surface MAker\n=====================\n\nstasma\n------\n\n\n**Stasma** is python package created to make binary and single star systems modeling easier.\nInside the package, Roche potential is implemented as a generalized implicit description of binary star surface and\nsimple potential for single rotating star.\n\nStasma is a precursor for **elisa** package that is currently in development, and it is intended\nto be application with full implementation of eclipsing binary star and single star physics including light curve\nmodeling including pulsations.\n\nRequirements\n------------\n\n**Stasma** is a python package which requires ``python v3.6+`` and has following dependencies::\n\n cycler==0.10.0\n matplotlib==2.1.0\n numpy==1.13.3\n pandas==0.23.0\n pyparsing==2.2.0\n pytest==3.2.3\n python-dateutil==2.6.1\n pytz==2017.2\n py==1.4.34\n astropy==2.0.2\n scipy==1.0.0\n six==1.11.0\n\nNevertheless, versions are specified precisely, it doesn't mean that stasma won't work with higher versions,\nit just was not tested with other versions of mentioned python packages.\n\n``stasma`` is multiplatform library fully supported on Linux and Windows operating systems.\n\nHow to\n------\n\nThe following guide describes all capabilities and features of this package.\n\nInstall\n-------\n\nAs an any python package, ``stasma`` the easiest and safer way to install is to create python virtual\nenvironment and install all requirements into it. Here is a simple guide, how to od it. Details of installation differ\nin dependence on the selected operating system.\n\nUbuntu [or similar]\n~~~~~~~~~~~~~~~~~~~\n\nFirst, you have to install Python 3.6 or higher. In newest stable version ``Ubuntu 18.04`` there is already preinstalled\npython `3.6.x`. In older versions, you will have to add repository and install it manually.\n\nInstall ``pip3`` python package manager if is not already installed on your system, usually by execution of command::\n\n apt install -y python3-pip\n\nInstall virtual environment by command::\n\n pip3 install virtualenv\n\nTo create virtual environment, create directory where python virtual environment will be stored, e.g. ``///env36``\nand run following command::\n\n virtualenv ///env36 --python=python3.6\n\nAfter few moments you virtual environment is created and ready for use. In terminal window, activate virtual environment::\n\n . ///env36/bin/activate\n\nWhen virtual environment is activated, install ``stasma`` by::\n\n pip3 install stasma\n\n\nWindows\n~~~~~~~\n\nTo install python in windows, download ``python 3.6.x`` installation package from official python web site.\nInstallation package will create all necessary dependencies with exception of virtual environment.\nInstall virtual environment by execution of following command in command line::\n\n pip3 install virtualenv\n\nMake sure a proper version of python and pip is used. When done, create directory where virtual environment will be\nstored and run::\n\n virtualenv ///env36 --python=python3.6\n\nNow, when virtual environment is prepared, run::\n\n . ///env36/Scripts/activate\n\nAnd finally install ``stasma``::\n\n pip3 install stasma\n\nConfiguration\n-------------\n\nCurrently, you have a possibility to configure logging level and logging structure.\nBy default, logging level is specified by ``json`` logging definition deployed in site-packages\n(installation directory of all python packages). If you want to enable logging,\njust import configuration module and run setup logging function\n\n.. code:: python\n\n from stasma.conf import config\n\n def main():\n config.set_up_logging()\n ...\n\n if __name__ == \"__main__\":\n main()\n\nIf you wish to change a logging, define your own ``json`` configuration and setup path in stasma configuration ini file\n\n.. code:: ini\n\n [general]\n log_config=////\n\nConfiguration ini file has to be supplied either as environment variable ``STASMA_CONFIG`` or stored in your\nvirtual environment directory as ``conf/stasma_conf.ini``.\n\nImportant api docs\n------------------\n\n``stasma.base.star.Star:``\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n class define Star instance\n\n :param name: char; name of instance\n :param suppress_logger: bool; enable/disable logger\n :param kwargs:\n :**kwargs options**:\n * **mass** * -- float or astropy.units.Quantity;\n mass of Start object\n\n * **surface_potential** * -- float;\n unit-less Roche surface potential of Star\n\n * **synchronicity** * -- float;\n synchronicity of Star defined in generalized Roche potential as ratio of rotational angular\n velocity to orbital angular velocity\n\n * **discretization_factor** * -- float;\n average angular distance of two nearest points on Star surface\n\n * **spots** * -- list of dicts;\n list of spots definition (see ``from stasma.base.Spot``)\n\n * **mass** * -- float or astropy.units.Quantity;\n mass of Start object\n\n * **polar_log_g** * -- float;\n polar gravity acceleration in log10 of cgs units\n\n * **color** * -- list; [<0-255>, <0-255>, <0-255>]\n color definition for plotting\n\n\n*important accessible properties computed on fly:*\n\n - critical_surface_potential\n - backward_radius\n - forward_radius\n - polar_radius\n - side_radius\n\n``stasma.base.star.Spot:``\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n :note: instances of this class are used as a container for individual spot defined for each Star; it is not intended to be used stand alone\n\n :param kwargs:\n :**kwargs options**:\n * **longitude** * -- float;\n longitude of spot center\n\n * **latitude** * -- float;\n latitude of spot center\n\n * **angular_diameter** * -- float;\n angular diameter of spot\n\n * **discretization_factor** * -- float;\n discretization factor of spor, if not specified, discretization of parent Star will be used\n\n * **color** * -- list; [<0-255>, <0-255>, <0-255>]\n color definition for plotting for given spot\n\n``stasma.single_system.system.SingleSystem:``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n :param name: char; name of instance\n :param suppress_logger: bool; enable/disable loggerd\n :param kwargs:\n :**kwargs options**:\n * **period** * -- stasma.base.star.Star;;\n instance of Star\n * **inclination** * -- float or astropy.units.Quantity;\n inclination of binary system; default unit is `degree`\n * **rotation_period** * -- float or astropy.units.Quantity;\n rotation period of star; default unit is `day`\n\n\n``stasma.single_system.system.SingleSystem.build_mesh(self, return_mesh=False):``\n.................................................................................\n\nuser face method for building mesh; as mesh we define a set of points on surface of star objects.\n\n :param return_mesh: bool; if True, return surface points of object (spots included); return value of method will be numpy.arrays like numpy.array()\n :return: numpy.array or None\n\n``stasma.single_system.system.SingleSystem.build_surface(self, return_surface=False):``\n.......................................................................................\n\n user face method to build surface; there is assumption that build_mesh() was called before this method, otherwise calling this method will lead to crash\n\n :param return_surface: bool; if True, return value of method will be tuple like (points, faces)\n :return: Tuple or None\n\n``stasma.single_system.system.SingleSystem.plot.equipotential(self, **kwargs):``\n................................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **axis_unit** * -- any astropy.unit lenght unit, eg. astropy.units.solRad, astropy.units.AU, astropy.units.m, etc. if empty astropy.units.solRad is assumed;\n\n``stasma.single_system.system.SingleSystem.plot.mesh(self, **kwargs):``\n.......................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **axis_unit** * -- any astropy.unit lenght unit, eg. astropy.units.solRad, astropy.units.AU, astropy.units.m, etc. if empty astropy.units.solRad is assumed;\n * **plot_axis** * -- enable/disable axis in resulting plot, deafault is True;\n * **inclination** * -- angle between rotational axis and line of sight;\n * **azimuth** * -- angle between 0 latitude meridian and line of sight;\n\n``stasma.single_system.system.SingleSystem.plot.wireframe(self, **kwargs):``\n............................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **axis_unit** * -- any astropy.unit lenght unit, eg. astropy.units.solRad, astropy.units.AU, astropy.units.m, etc. if empty astropy.units.solRad is assumed;\n * **plot_axis** * -- enable/disable axis in resulting plot, deafault is True;\n * **inclination** * -- angle between rotational axis and line of sight;\n * **azimuth** * -- angle between 0 latitude meridian and line of sight;\n\n``stasma.single_system.system.SingleSystem.plot.surface(self, **kwargs)``:\n..........................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **axis_unit** * -- any astropy.unit lenght unit, eg. astropy.units.solRad, astropy.units.AU, astropy.units.m, etc. if empty astropy.units.solRad is assumed;\n * **edges** * -- enable/disable edge highlight of faces, default is True;\n * **normals** * -- enable/disable normal vector of faces, default is False;\n * **inclination** * -- angle between rotational axis and line of sight;\n * **azimuth** * -- angle between 0 latitude meridian and line of sight;\n * **units** * -- any astropy.unit lenght unit, eg. astropy.units.solRad, astropy.units.AU, astropy.units.m, etc. if empty astropy.units.solRad is assumed;\n\n``stasma.binary_system.system.BinarySystem:``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n :param name: char; name of instance\n :param primary: stasma.base.star.Star; instance of primary Star\n :param secondary: stasma.base.star.Star; instance of secondary Star\n :param suppress_logger: bool; enable/disable logger\n :param kwargs:\n :**kwargs options**:\n * **period** * -- float or astropy.units.Quantity; period of binary system, default unit is `day`\n\n * **eccentricity** * -- float; eccentricity of binary system\n\n * **inclination** * -- float or astropy.units.Quantity; inclination of binary system; default unit is `radian`\n\n * **argument_of_periastron** * -- float or astropy.units.Quantity; argument_of_periastron of binary system; default unit is `radian`\n\n*user face methods:*\n\n``stasma.binary_system.system.BinarySystem.build_mesh(self, component=None, components_distance=None, return_mesh=False):``\n...........................................................................................................................\n\n user face method for building mesh; as mesh we define a points surface of star objects.\n\n :param component: str or list; define component to build surface for; if None, surface for both components will be evaluated\n :param components_distance: float;\n :param return_surface: bool; if True, return points of objects (spots included); return value of method will be dictionary of numpy.arrays like {\"primary\": numpy.array(), \"secondary\": numpy.array()}\n :return: Dict or None\n\n\n``stasma.binary_system.system.BinarySystem.build_surface(self, component=None, components_distance=None, return_surface=False):``\n.................................................................................................................................\n\n user face method to build surface.;There is assumption that build_mesh() was called before this method, otherwise calling this method will lead to crash\n\n :param component: str or list; define component to build surface for; if None, surface for both components will be evaluated\n :param components_distance: float;\n :param return_surface: bool; if True, return value of method will be tuple like (points, faces)\n :return: Tuple or None\n\n``stasma.binary_system.system.BinarySystem.plot.orbit(self, **kwargs):``\n........................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **start_phase** * -- float;\n * **stop_phase** * -- float;\n * **number_of_points** * -- int;\n * **axis_unit** * -- any astropy.unit lenght unit or `dimensionless`, eg. astropy.units.solRad, astropy.units.AU, astropy.units.m, etc., if empty `dimensionless` is assumed where semi major axis is set to 1;\n * **frame_of_reference** * -- str; `primary` or `barycenter`\n\n``stasma.binary_system.system.BinarySystem.plot.equipotential(self, **kwargs):``\n................................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **plane** * -- str; `xy`, `yz`, `zy`\n * **phase** * -- float;\n\n``stasma.binary_system.system.BinarySystem.plot.mesh(self, **kwargs):``\n.......................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **phase** * -- float;\n * **components_to_plot** * -- str; `primary`, `secondary` or `both`\n * **plot_axis** * -- bool;\n * **inclination** * -- angle between orbital axis and line of sight;\n * **azimuth** * -- photometric phase of the system;\n\n``stasma.binary_system.system.BinarySystem.plot.wireframe(self, **kwargs):``\n............................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **phase** * -- float;\n * **components_to_plot** * -- str; `primary`, `secondary` or `both`\n * **plot_axis** * -- bool;\n * **inclination** * -- angle between orbital axis and line of sight;\n * **azimuth** * -- photometric phase of the system;\n\n``stasma.binary_system.system.BinarySystem.plot.surface(self, **kwargs):``\n..........................................................................\n\n :param kwargs:\n :**kwargs options**:\n * **phase** * -- float;\n * **components_to_plot** * -- str; `primary`, `secondary` or `both`\n * **normals** * -- bool;\n * **edges** * -- bool;\n * **plot_axis** * -- bool;\n * **inclination** * -- float or wtf;\n * **azimuth** * -- float;\n * **units** * -- any astropy.unit lenght unit or `dimensionless`, eg. astropy.units.solRad, astropy.units.AU, astropy.units.m, etc., if empty `dimensionless` is assumed where semi major axis is set to 1;\n\n*important accessible properties computed on fly:*\n\n - semi_major_axis\n - morphology\n - mass_ratio\n - orbit\n\n``stasma.binary_system.orbit.Orbit:``\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n :param suppress_logger: bool; enable/disable logger\n :param kwargs:\n :**kwargs options**:\n * **period** * -- float or astropy.units.Quantity; period of binary system, default unit is `day`\n\n * **eccentricity** * -- float; eccentricity of binary system\n\n * **inclination** * -- float or astropy.units.Quantity; inclination of binary system; default unit is `degree`\n\n * **argument_of_periastron** * -- float or astropy.units.Quantity; argument_of_periastron of binary system; default unit is `radian`\n\n*user face methods:*\n\n``stasma.binary_system.orbit.Orbit.orbital_motion(self, phase=None):``\n......................................................................\n\n function takes photometric phase of the binary system as input and calculates positions of the secondary\n component in the frame of reference of primary component\n\n :param phase: numpy.array or numpy.float\n :return: numpy.array: matrix consisting of column stacked vectors distance, azimut angle, true anomaly and phase\n\n ::\n\n numpy.array((r1, az1, ni1, phs1),\n (r2, az2, ni2, phs2),\n ...\n (rN, azN, niN, phsN))\n\n*important accessible properties computed on fly:*\n\n - periastron_distance\n - periastron_phase\n\nBasic examples and usage\n------------------------\n\nCreate binary sytem\n~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from astropy import units\n from stasma.base.star import Star\n from stasma.binary_system.system import BinarySystem\n\n\n def main():\n\n primary = Star(\n mass=2.0 * units.solMass,\n surface_potential=2.6,\n synchronicity=1.0,\n discretization_factor=5,\n color=[0, 255, 0]\n )\n secondary = Star(\n mass=1.0 * units.solMass,\n surface_potential=2.6,\n synchronicity=1.0,\n discretization_factor=5,\n color=[255, 0, 0]\n )\n\n bs = BinarySystem(\n primary=primary,\n secondary=secondary,\n argument_of_periastron=90 * units.deg,\n period=1 * units.d,\n eccentricity=0.0,\n inclination=90 * units.deg\n )\n\n if __name__ == \"__main__\":\n main()\n\nCreate single system\n~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from astropy import units\n from stasma.base.star import Star\n from stasma.single_system.system import SingleSystem\n\n\n def main():\n\n star = Star(\n mass=1.0 * units.solMass,\n discretization_factor=3,\n polar_log_g=4.1 * units.dex(units.cm / units.s ** 2),\n color=[255, 0, 0]\n )\n\n single = SingleSystem(\n star=star,\n inclination=90 * units.deg,\n rotation_period=0.5 * units.d\n )\n\n if __name__ == \"__main__\":\n main()\n\nCreate binary sytem with three spots on primary and one spot on secondary component\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from astropy import units\n from stasma.base.star import Star\n from stasma.binary_system.system import BinarySystem\n\n def main():\n\n spots_metadata = {\n \"primary\":\n [\n {\"longitude\": 90,\n \"latitude\": 58,\n \"angular_diameter\": 15},\n {\"longitude\": 85,\n \"latitude\": 80,\n \"angular_diameter\": 30},\n {\"longitude\": 45,\n \"latitude\": 90,\n \"angular_diameter\": 30},\n ],\n\n \"secondary\":\n [\n {\"longitude\": 90,\n \"latitude\": 0,\n \"angular_diameter\": 40},\n ]\n }\n\n primary = Star(\n mass=2.0 * units.solMass,\n surface_potential=2.6,\n synchronicity=1.0,\n discretization_factor=4,\n spots=spots_metadata['primary'],\n color=[0, 255, 0]\n )\n secondary = Star(\n mass=1.0 * units.solMass,\n surface_potential=2.6,\n synchronicity=1.0,\n discretization_factor=4,\n spots=spots_metadata['secondary'],\n color=[255, 0, 0]\n )\n\n bs = BinarySystem(\n primary=primary,\n secondary=secondary,\n argument_of_periastron=90 * units.deg,\n period=1 * units.d,\n eccentricity=0.0,\n inclination=90 * units.deg,\n )\n\n if __name__ == \"__main__\":\n main()\n\nBuild mesh and surface of objects in binary system\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n:note: parameter `componetn_distance` is driven parameter to involve capability to compute and create system in different part of eccentric orbit\n\n**After computation, properties like ``points`` or ``faces`` are available from Star class instaces.**\n\n.. code-block:: python\n\n def main():\n ...\n # definitions\n\n bs.build_mesh(components_distance=1.0)\n bs.build_surface(components_distance=1.0)\n\n print(primary.points)\n print(primary.faces)\n print(primary.spots)\n\n print(primary.spots[#index].points)\n print(primary.spots[#index].faces)\n\n if __name__ == \"__main__\":\n main()\n\nBuild mesh and surface of objects in single system\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n**After computation, properties like ``points`` or ``faces`` are available from Star class instace.**\n\n.. code-block:: python\n\n def main():\n ...\n # definitions\n\n single.build_mesh()\n single.build_surface()\n\n print(star.points)\n print(star.faces)\n print(star.spots)\n\n print(star.spots[#index].points)\n print(star.spots[#index].faces)\n\n if __name__ == \"__main__\":\n main()\n\n\nPlot binary star system wireframe\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n def main():\n ...\n # definitions\n\n bs.build_mesh(components_distance=1.0)\n bs.build_surface(components_distance=1.0)\n\n bs.plot.wireframe()\n\n if __name__ == \"__main__\":\n main()\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mikecokina/stasma.git", "keywords": "eclipsing binaries astronomy analysis physic", "license": "", "maintainer": "", "maintainer_email": "", "name": "stasma", "package_url": "https://pypi.org/project/stasma/", "platform": "", "project_url": "https://pypi.org/project/stasma/", "project_urls": { "Homepage": "https://github.com/mikecokina/stasma.git" }, "release_url": "https://pypi.org/project/stasma/0.1.2/", "requires_dist": [ "astropy (==2.0.2)", "cycler (==0.10.0)", "matplotlib (==2.1.0)", "numpy (==1.13.3)", "pandas (==0.23.0)", "py (==1.4.34)", "pyparsing (==2.2.0)", "pytest (==3.2.3)", "python-dateutil (==2.6.1)", "pytz (==2017.2)", "scipy (==1.0.0)", "six (==1.11.0)" ], "requires_python": "", "summary": "Stellar surface maker", "version": "0.1.2" }, "last_serial": 5512599, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "2b6e690b7cf457b95ef525522def046c", "sha256": "96f24b38ab6b058904485cb71489735881bd981dd1f955a592306239a67aaae3" }, "downloads": -1, "filename": "stasma-0.1.0-py36-none-any.whl", "has_sig": false, "md5_digest": "2b6e690b7cf457b95ef525522def046c", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 56954, "upload_time": "2019-02-06T23:33:32", "url": "https://files.pythonhosted.org/packages/97/1d/3546922833984cf370bbcd4c3641511a515c97340de0c63f517db5f1d326/stasma-0.1.0-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0c65e8cda0891ab37aab8b43207804d", "sha256": "78528b437a38111005876eed90b649c07bf05a82a83c7951244a63cd4f8b19ca" }, "downloads": -1, "filename": "stasma-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b0c65e8cda0891ab37aab8b43207804d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57098, "upload_time": "2019-02-06T23:33:34", "url": "https://files.pythonhosted.org/packages/69/0a/4cdd9ae17cabbc2cf2523fc99b478bdeed279b3950803fefab89715a2ebf/stasma-0.1.0.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "98f1e675f83cab2ef5343cafe09f985b", "sha256": "0341fa8129c4b14a56d8bd7a50929c414b8f361b31bff6b930528d3fc56653b2" }, "downloads": -1, "filename": "stasma-0.1.2-py36-none-any.whl", "has_sig": false, "md5_digest": "98f1e675f83cab2ef5343cafe09f985b", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 57769, "upload_time": "2019-07-10T15:11:38", "url": "https://files.pythonhosted.org/packages/57/99/105d79edf529a9e5eddae4643f86049e7fe31925d36cb6b812c92434c062/stasma-0.1.2-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "daebe6a0a547fc042a8a0631012494fb", "sha256": "6fa982cc0dfea62987bccc785731d606e70f6cac714dfe13d4e1f63280767acd" }, "downloads": -1, "filename": "stasma-0.1.2.tar.gz", "has_sig": false, "md5_digest": "daebe6a0a547fc042a8a0631012494fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56656, "upload_time": "2019-07-10T15:11:40", "url": "https://files.pythonhosted.org/packages/47/70/324d8c62bd6c33f1d7ae4159cca07bdc3757f155272d7e2c1a891e5bbdd7/stasma-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "98f1e675f83cab2ef5343cafe09f985b", "sha256": "0341fa8129c4b14a56d8bd7a50929c414b8f361b31bff6b930528d3fc56653b2" }, "downloads": -1, "filename": "stasma-0.1.2-py36-none-any.whl", "has_sig": false, "md5_digest": "98f1e675f83cab2ef5343cafe09f985b", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 57769, "upload_time": "2019-07-10T15:11:38", "url": "https://files.pythonhosted.org/packages/57/99/105d79edf529a9e5eddae4643f86049e7fe31925d36cb6b812c92434c062/stasma-0.1.2-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "daebe6a0a547fc042a8a0631012494fb", "sha256": "6fa982cc0dfea62987bccc785731d606e70f6cac714dfe13d4e1f63280767acd" }, "downloads": -1, "filename": "stasma-0.1.2.tar.gz", "has_sig": false, "md5_digest": "daebe6a0a547fc042a8a0631012494fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56656, "upload_time": "2019-07-10T15:11:40", "url": "https://files.pythonhosted.org/packages/47/70/324d8c62bd6c33f1d7ae4159cca07bdc3757f155272d7e2c1a891e5bbdd7/stasma-0.1.2.tar.gz" } ] }