{ "info": { "author": "Thomas Chubb", "author_email": "thomas.chubb@monash.edu", "bugtrack_url": null, "classifiers": [], "description": "======================================================\nSkewT -- Atmospheric Profile Plotting and Diagnostics\n======================================================\n\nSkewT provides a few useful tools to help with the plotting and analysis of \nupper atmosphere data. In particular it provides some useful classes to \nhandle the awkward skew-x projection.\n\nNews\n====\n\n**18 June 2015. I have been delaying creating a new release for a long time, \nbut here it is! What's new in SkewT version 1.1.0?**\n\n* Fixed some bugs in CAPE calculations: we were mixing ambient \n temperature-derived significant levels with virtual temperature \n formulation for CAPE, which was producing some weird results in special \n cases.\n* Fixed plotting and CAPE calculations for soundings that had a \n tropopause above 100hPa\n* A few minor plotting issues, in particular things look better now if you \n want to plot a different temperature or pressure range (use tmax/tmin \n pmax/pmin kwargs to ``make_skewt_axes()``).\n* Responses to bugs raised by community (Thanks dudes).\n\n**SkewT has undergone a major overhaul in order to implement the new \nfeatures available in Matplotlib 1.4. It also has a bunch of new features \nthat we have been meaning to implement since inception. We hope you like it \nmore than ever!**\n\nImportant Notice\n================\n* Since version 1.0, SkewT has explicitly included the new SkewX classes \n that are showcased on the matplotlib website: \n http://matplotlib.org/mpl_examples/api/skewt.py\n This stuff is completely fundamental to SkewT.py and we are greatful to \n Ryan May from Unidata for providing this to the Python community.\n\nSounding Data\n=============\n\nThe easiest way to get some sounding data is to visit the University of \nWyoming's website:\n\nhttp://weather.uwyo.edu/upperair/sounding.html\n\nTo get some sounding data, follow the link and find the date, and location \nyou are interested in, view the data as a text file and just save the file \nto your system. If you want to get loads of data please be considerate about \nthe way you go about doing this! (Lots of wget requests makes the server \nadmins unhappy).\n\nYou can also pass your own data to SkewT by writing a text file in \n*identical* format to the University of Wyoming files, which are \nconstant-width columns. Here's a sample of the first few lines of one of the \nbundled examples::\n\n 94975 YMHB Hobart Airport Observations at 00Z 02 Jul 2013\n\n -----------------------------------------------------------------------------\n PRES HGHT TEMP DWPT RELH MIXR DRCT SKNT THTA THTE THTV\n hPa m C C % g/kg deg knot K K K \n -----------------------------------------------------------------------------\n 1004.0 27 12.0 10.2 89 7.84 330 14 284.8 306.7 286.2\n 1000.0 56 12.4 10.3 87 7.92 325 16 285.6 307.8 286.9\n 993.0 115 12.8 9.7 81 7.66 311 22 286.5 308.1 287.9\n\n\nAlternatively you can create a dictionary with the column headers as keys \nand the data as 1D python arrays (preferably use ``ma.masked_array``). \nThere's more about this under the \"Running SkewT\" section below.\n\nInstalling SkewT\n================\nWe recommend that you download the tarball (big green button on this page) \nand run::\n\n python setup.py install\n\nIf you want to put it somewhere different than your system files, you can do::\n \n python setup.py install --prefix=/path/to/local/dir\n\nJust remember, if you use a non-standard location you'll have to tell python \nabout where you install it. An easy way to do this is to add the environment \nvariable ``PYTHONPATH`` to your ``bashrc`` (you can read about this \nelsewhere).\n\nBecause SkewT is written purely in python, you don't even have to install it \ntry it out! Just download the tarball and extract it somewhere convenient, \nand navigate to SkewT/skewt, and everything you need is right there.\n\nYou can also install using the package manager, but I have had some \ncomplaints about dependency issues (All you should need is matplotlib and \nnumpy).\n\nRunning SkewT\n=============\n\nThere are three basic ways to run SkewT. You can execute it from the command \nline with a text file name as an argument, or you can import it as a module \nand pass it a text file name, or you can pass it data directly.\n\nRunning from command line\n-------------------------\n\nFrom the command line (navigate to SkewT/skewt) you can type::\n\n python SkewT.py /path/to/sounding_filename.txt\n\nWhat you'll get is all of the default settings. If you do this with the \nbundled example in ``SkewT/skewt/examples/bna_day1.txt``, you'll get this \n`graphical output \n`_.\n\nIf that's what you want, well and good, but if you want to tweak things like \nthe colours, read on...\n\nImport SkewT as a module\n------------------------\n\nAssuming you have installed the package on your system and your sounding \nfile is in your working directory, typical usage of SkewT could look like \nthis (I use ``IPython``)::\n\n In [1]: from skewt import SkewT\n In [2]: S=SkewT.Sounding(\"bna_day1.txt\")\n In [3]: S.plot_skewt(color='r')\n\n\nThe function ``plot_skewt()`` is a wrapper for a bunch of other functions. \nThis will give you exactly the same plot as running SkewT from the command \nline, but you have immediate access to all of the ``matplotlib`` plot \noptions for the profile traces and the barbs, but you don't get any control \nover anything else.\n\nThe full sequence of commands to get what ``plot_skewt`` wraps is this::\n\n In [1]: S.make_skewt_axes(tmin=-40.,tmax=30.,pmin=100.,pmax=1050.)\n In [2]: S.add_profile(color='r',bloc=0)\n In [3]: parcel=S.get_parcel()\n In [4]: S.lift_parcel(*parcel)\n\nYou don't have to put the ``tmin`` and other keyword arguments in to \n``make_skewt_axes()`` unless you want to plot against different values from \nthe defaults shown here. The keyword argument ``bloc`` stands for ''barb \nlocation'' and allows you to shift the wind barbs to the left or right. This \nis handy if you want to plot multiple profiles on the one Skew-T diagram, \nfor example, to compare today's and yesterday's soundings::\n\n In [1]: S=SkewT.Sounding(\"./skewt/examples/bna_day1.txt\")\n In [2]: T=SkewT.Sounding(\"./skewt/examples/bna_day2.txt\")\n In [3]: S.make_skewt_axes()\n In [4]: S.add_profile(color='r',bloc=0)\n In [5]: S.soundingdata=T.soundingdata # replace the sounding data in S with that from T \n In [6]: S.add_profile(color='b',bloc=1)\n\nImport as a module and run with your own data\n---------------------------------------------\n\nGot sounding data from another source? Want to make Skew-T diagrams of model \noutput? Look no further. All you need to do is define a python dictionary \nlike so::\n\n In [1]: mydata=dict(zip(('hght','pres','temp','dwpt'),(height_m,presssure_pa,temperature_c,dewpoint_c))) \n In [2]: S=SkewT.Sounding(soundingdata=mydata)\n\nAt a minimum we require ``pres``, ``temp`` and ``dwpt`` to generate the \nprofile traces, and ``hght`` is required for parcel calculations (although a \nfuture implementation will use a hydrostatic atmosphere assumption). The other \nkeys accepted are those listed in the University of Wyoming sounding data \nheader above.\n\nParcel Ascent\n=============\n\nAs of version 1.0, SkewT has a full parcel ascent routing including \nautomatic parcel definitions and CAPE/CIN and significant level \ncalculations.\n\nAutomatic Parcel Definition\n---------------------------\n\nThere are three standard parcel definitions used in predicting severe \nweather (see http://www.spc.noaa.gov/sfctest/help/sfcoa.html):\n\n* Surface Based (``'sb'``): The surface conditions. Found by taking the \n lowest level where all data is available. This may not represent the \n convective potential of the sounding very well but is commonly used.\n* Mixed Layer (``'ml'``): A parcel representing the mean potential energy in \n the lowest 100-mb of the atmosphere. Found by averaging potential \n temperature and the water vapour mixing ratio.\n* Most Unstable (``'mu'``): The most unstable parcel of air found within the \n lowest 300-mb of the atmosphere. Found by calculating CAPE for conditions \n at all levels in the sounding data, and determining the equivalent surface \n parcel by adiabatic descent. (Note: if CAPE is 0 for all levels this\n routine defaults to the surface based parcel)\n\nTo calculate one of these parcels for your sounding, use the \n``get_parcel()`` routine, which is a wrapper for ``surface_based_parcel()``, \n``mixed_layer_parcel()`` and ``most_unstable_parcel()``. Optionally pass it \nthe parcel type you want (default is ``'mu'``)::\n\n In [1]: S=SkewT.Sounding(\"./skewt/examples/bna_day1.txt\")\n In [2]: parcel=S.get_parcel('mu',depth=300)\n In [3]: parcel\n Out[3]: (1000.0, 23.037, 13.626, 'mu')\n In [4]: S.lift_parcel(*parcel_2)\n\nOr, you can define your own parcel (the fourth item is just some text which \nappears on the Skew-T diagram)::\n\n In [5]: parcel_2=(1000.0, 25.0, 18, 'user')\n In [6]: S.make_skewt_axes(); S.add_profile(); \n In [7]: S.lift_parcel(*parcel_2)\n\nCAPE/CIN calculation\n--------------------\n\nDefinitions in this section are based on Markowsi and Richardson (2010).\n\nThe ``lift_parcel()`` routine above is a wrapper for the ``get_cape()`` \nroutine, but it also handles the graphics. The ``get_cape()`` routine, by \nitself, will calculate significant levels and CAPE/CIN::\n\n In [8]: P_lcl,P_lfc,P_el,CAPE,CIN=S.get_cape(*parcel)\n In [9]: print P_lcl,P_lfc,P_el,CAPE,CIN\n 870.560154927 859.695806371 382.117602258 427.793216382 -8.64938413185\n\n In [10]: P_lcl,P_lfc,P_el,CAPE,CIN=S.get_cape(*parcel_2)\n In [11]: print P_lcl,P_lfc,P_el,CAPE,CIN\n 902.773891386 902.773891386 178.058628014 2540.55724083 0.0\n\n``get_cape()`` complains a bit if there are any dew point temperatures \nmissing in the profile, but its default behaviour is to fill these with the \nminimum dewpoint in the column, and this will have a minimal effect on the \nCAPE calculation. \n\nThe lifted condensation level (LCL) is found by solving for the intersection \nof the temperature for dry adiabatic ascent for the parcel, and a line of \nconstant water vapour mixing ratio.\n\nTo find the level of free convection (LFC), the parcel is lifted along a \nmoist adiabat from the LCL. For details, please see the ``moist_ascent()`` \nroutine in ``SkewT.py``. All intersections of the parcel temperature and the \nenvironmental temperature are identified. Strictly speaking, all such levels \nare `equilibrium levels`. There are basically three possible scenarios:\n\n* Parcel cooler than environment at LCL and no equilibrium levels: There are \n no unstable levels in the profile above the LCL, so the LFC does not \n exist.\n* Parcel warmer than environment at LCL: This means that LFC=LCL, and there \n must be at least one stable equilibrium level, which could be as high as \n the tropopause.\n* Parcel cooler than environment at LCL and at least two equilibrium levels: \n This means that the parcel is initially stable at the LCL, but further \n lifting will bring it to a condition where it becomes unstable. The LFC is \n defined as the first point at which this occurs.\n\nThe term `Equilibrium Level` (EL) is often used to describe the first \n*stable* equilibrium level above the LFC, if this exists. Once the LCL, LFC \nand EL have been defined, we can calculate the Convective Available \nPotential Energy (CAPE) and Convective Inhibition::\n\n CAPE=trapz(9.81*(tparcel-tempenv)/tempenv,hght)\n\nThis expression only applies to the region where ``T_parcel>T_environment`` \nbetween the LFC and the EL. ``trapz`` is a basic trapezoidal integration \nroutine from ``numpy``.` Similarly for CIN::\n\n CIN=trapz(9.81*(tparcel-tempenv)/tempenv,hght)\n\nWhich applies to the region where ``tparcel<=tempenv`` between the surface \nand the EL.\n\nThe example above (``bna_day1.txt``) is a perfect demonstration of why this \nbehaviour might not be desirable. Using the `textbook \n`_ \ndefinition (i.e. ``totalcape=False``) of the EL, you get practically no \nCAPE, but it's clear that there is a large layer of instability aloft. \nHowever, if you define the highest equilibrium level as the EL (i.e. \n``totalcape=True``), you get an answer that is more `representative \n`_ \nof the conditions of the day.\n\nThe keyword argument ``totalcape`` lets you override the default definition \nof the so-called 'Equilibrium Level,' (EL) which I took from Markowsi and \nRichardson (2010, p. 33): \"The `equilibrium level` is defined to be the \nheight at which a buoyant lifted parcel becomes neutrally buoyant, that is, \nthe height above the LFC at which the parcel temperature is equal to the \nenvironmental temperature.\"\n \nWorking Examples\n================\nWe have bundled in a set of example soundings in the ``SkewT/skewt/examples \ndirectoy``. You can run them like this::\n\n $ python SkewT.py example1\n\nSubstitute digits 1-4 to get the different examples. The code for these is \nright down the end of the SkewT.py file so you can have a look and play \naround with them if you want without affecting how SkewT works on import.\n\n* Example 1: Two soundings from Hobart that I used to develop al ot of the \n initial code base\n* Example 2: Total CAPE vs. Textbook CAPE\n* Example 3: Some severe weather events in Australia, with automatic parcel \n definitions.\n* Example 4: Use of custom parcels\n* **Example 5 (new in v1.1.0): High tropopause sounding**\n\nThe sounding files and output graphics for the examples are all hosted `here \n`_.\n\n\nTo-Do List\n==========\n* More column diagnostics.\n* Hodographs? Anyone? \n\nContributors\n============\n* Ross Bunn from Monash University is actively developing and finding all my \n warty bugs.\n* Gokhan Sever (North Carolina) is a keen user and has been encouraging me \n to add more stuff. It's thanks to him that I have finally implemented the \n CAPE routines.\n* Simon Caine.\n* Hamish Ramsay (Monash) has promised to at least think about adding some \n extra diagnostics.\n* Holger Wolff as tester\n\n\nThanks for your interest in this package and I'd love to hear your feedback: \nthomas.chubb AT monash.edu", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/SkewT/", "keywords": null, "license": "LICENSE.txt", "maintainer": null, "maintainer_email": null, "name": "SkewT", "package_url": "https://pypi.org/project/SkewT/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/SkewT/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/SkewT/" }, "release_url": "https://pypi.org/project/SkewT/1.1.0/", "requires_dist": null, "requires_python": null, "summary": "Plots and analyses atmospheric profile data from UWyo database", "version": "1.1.0" }, "last_serial": 1596836, "releases": { "0.1.0": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "dee1707c1dc401f3c23fb613c3dc847e", "sha256": "f04ff85614e917ac77ddf8582ed90043b39c13e38c4728e1150a5354657c0657" }, "downloads": -1, "filename": "SkewT-0.1.1.tar.gz", "has_sig": false, "md5_digest": "dee1707c1dc401f3c23fb613c3dc847e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11447, "upload_time": "2013-07-03T07:11:18", "url": "https://files.pythonhosted.org/packages/4f/c2/b3afb1755bafaf0c285291438ad51e72f0e06fa79bf7b5f0199bee76405b/SkewT-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "ba8e666fc7308b6b6f3093b60494fb42", "sha256": "29aac43dea1d0ebcdc8bcf77e45a0d841d0e82ba508e9060a61a3ab1a3bc1d80" }, "downloads": -1, "filename": "SkewT-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ba8e666fc7308b6b6f3093b60494fb42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12949, "upload_time": "2013-07-09T02:19:55", "url": "https://files.pythonhosted.org/packages/02/33/9003d30646ab3e4ee1f947c52188eae028aa7f714a7b1dd571fadeaeb92d/SkewT-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "1e311896d01bb35b90bb739fa18cd453", "sha256": "c80ca5b656eac5e4dbcd64e3812ed952edbe1ecb7dcafcc9ad5e624f5328033c" }, "downloads": -1, "filename": "SkewT-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1e311896d01bb35b90bb739fa18cd453", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15706, "upload_time": "2013-09-20T00:16:38", "url": "https://files.pythonhosted.org/packages/d6/e4/fe4cdca22c45bb3e4f5d41aae0ef6c4e3485eab86c96a12cb7cc9ef1146f/SkewT-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "42e3d976ec1b60538c6b60fe08e3f36a", "sha256": "8d15f17916d88b95f2f13c76d42a2351e2f67001aedf82d4eb853c338bb5ccb5" }, "downloads": -1, "filename": "SkewT-0.1.4.tar.gz", "has_sig": false, "md5_digest": "42e3d976ec1b60538c6b60fe08e3f36a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17981, "upload_time": "2014-02-20T01:08:20", "url": "https://files.pythonhosted.org/packages/57/f9/718f3b611e3117647fcd390c7e8141db0b5681694549a17a3f9a27e136a7/SkewT-0.1.4.tar.gz" } ], "0.1.4r1": [ { "comment_text": "", "digests": { "md5": "7d7689d6be3cf7523e286d7e45831b02", "sha256": "16546d96c6d23d146ad2ad53b70b69f3c829466e870a7fc76bb81c1ce020436a" }, "downloads": -1, "filename": "SkewT-0.1.4r1.tar.gz", "has_sig": false, "md5_digest": "7d7689d6be3cf7523e286d7e45831b02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18003, "upload_time": "2014-02-20T01:12:21", "url": "https://files.pythonhosted.org/packages/48/02/f13ea5f0d64cdd3c3029c405b4fc4a200ad6e6c4604a52d0b1f67c0c3a08/SkewT-0.1.4r1.tar.gz" }, { "comment_text": "Contains example sounding files and png outputs", "digests": { "md5": "a2399bba604f3c46834f6e4e6e4187f8", "sha256": "8f88f489b0792849f8a2b8770da528d2a8d3e633af9d2c2cb0fcae726e3c3e4e" }, "downloads": -1, "filename": "skewt.examples.tar.gz", "has_sig": false, "md5_digest": "a2399bba604f3c46834f6e4e6e4187f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 425381, "upload_time": "2014-02-20T01:14:08", "url": "https://files.pythonhosted.org/packages/8b/97/b00bd34c7e70be2f951fbf02895059951b7d11fbd4bf396e19b964f2fd2e/skewt.examples.tar.gz" } ], "0.1.4r2": [ { "comment_text": "", "digests": { "md5": "d12de98b3c2efdf3cce0de782bda0e41", "sha256": "75256a40f628fbc93474d230cdf4e4061d59f6337cb0f8aa003febc1a9ae733f" }, "downloads": -1, "filename": "SkewT-0.1.4r2.tar.gz", "has_sig": false, "md5_digest": "d12de98b3c2efdf3cce0de782bda0e41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18909, "upload_time": "2014-02-23T23:00:56", "url": "https://files.pythonhosted.org/packages/e9/da/28b715eeb35f2e623a61b80421cde7d6a8e96ce1be72318199ddfe45aeb5/SkewT-0.1.4r2.tar.gz" } ], "0.1.4r3": [ { "comment_text": "", "digests": { "md5": "dfb076282101dff5d3374c212477dce3", "sha256": "50d221063eefc9f012240b24b41c446c09bf77622b33f2010990eac57ce25342" }, "downloads": -1, "filename": "SkewT-0.1.4r3.tar.gz", "has_sig": false, "md5_digest": "dfb076282101dff5d3374c212477dce3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19612, "upload_time": "2014-09-02T04:29:21", "url": "https://files.pythonhosted.org/packages/8f/76/f7ce802b02e0577361889a31491b5995eb4adbeabb3dc79ac62ccfb0e28e/SkewT-0.1.4r3.tar.gz" } ], "0.1.4r4": [ { "comment_text": "", "digests": { "md5": "7665139b81deb1b96943e04b0788525a", "sha256": "101deb127593824436834f32627c55c1d68499589dce05877e735aa9abfd3547" }, "downloads": -1, "filename": "SkewT-0.1.4r4.tar.gz", "has_sig": false, "md5_digest": "7665139b81deb1b96943e04b0788525a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19909, "upload_time": "2014-09-02T05:04:22", "url": "https://files.pythonhosted.org/packages/42/34/84b2498ab327920592d562989a7bb5ff0bb972b5669cfb552c115a85a407/SkewT-0.1.4r4.tar.gz" } ], "0.1.4r5": [ { "comment_text": "", "digests": { "md5": "4b6be4e88d23298be08416f33191a448", "sha256": "cffe13e3719dcfc3664eb58bd64657d5dd4a491570b7be7bbd445c8be51c5356" }, "downloads": -1, "filename": "SkewT-0.1.4r5.tar.gz", "has_sig": false, "md5_digest": "4b6be4e88d23298be08416f33191a448", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19897, "upload_time": "2014-09-02T05:06:26", "url": "https://files.pythonhosted.org/packages/89/9e/f70c207b98e6fe83697255c731e1867e71ddf59fec8ff215c954d58304f6/SkewT-0.1.4r5.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "5d4a4dfd499cade5930f20f5d06fdfb2", "sha256": "59a751c390be2cbeba36da7a7a01911780cf3217052b6d3084b1c248e4c09489" }, "downloads": -1, "filename": "SkewT-0.1.5.tar.gz", "has_sig": false, "md5_digest": "5d4a4dfd499cade5930f20f5d06fdfb2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 716725, "upload_time": "2014-09-02T05:34:04", "url": "https://files.pythonhosted.org/packages/c1/fd/b05517c112e9bf791a06d49d13f05c614dc9bd6b3708cefce24db9c492cd/SkewT-0.1.5.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "cb7c0d36dda60ce4105e93c8327e2758", "sha256": "5fd9284457619a7563da71e2fa677a9bf415527245f8eff86d220f97dcf77c28" }, "downloads": -1, "filename": "SkewT-1.0.tar.gz", "has_sig": false, "md5_digest": "cb7c0d36dda60ce4105e93c8327e2758", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4358966, "upload_time": "2014-10-13T10:45:31", "url": "https://files.pythonhosted.org/packages/9b/8e/977f2d129cc97cc72cde97223b498e3a9fdca5fbe0e75120b8e764d0b3b7/SkewT-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "2acf4a147cd80a67d6f97e81f6a3f7ca", "sha256": "f95dac2ad7970a33b6c4976699beb479d615936e99a0e3764fa2633d999b0185" }, "downloads": -1, "filename": "SkewT-1.0.1.tar.gz", "has_sig": false, "md5_digest": "2acf4a147cd80a67d6f97e81f6a3f7ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4365488, "upload_time": "2014-10-13T22:32:29", "url": "https://files.pythonhosted.org/packages/8b/b2/c6c2fc5d27817cefc0cde36c40186676d69bebc85be9ce2a8c6ee6cddcdb/SkewT-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "119c2ecb35ae95fe8bb35a7cd2bd9397", "sha256": "70724af966371ddcaf64bb86d8845168658918e0a177dc6cee59e6c07f110d4d" }, "downloads": -1, "filename": "SkewT-1.1.0.tar.gz", "has_sig": false, "md5_digest": "119c2ecb35ae95fe8bb35a7cd2bd9397", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52915, "upload_time": "2015-06-18T06:59:29", "url": "https://files.pythonhosted.org/packages/f4/8b/f26efabecbf1f4881f454d35301c56578a3696d3dfcefce09c1c69cbb462/SkewT-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "119c2ecb35ae95fe8bb35a7cd2bd9397", "sha256": "70724af966371ddcaf64bb86d8845168658918e0a177dc6cee59e6c07f110d4d" }, "downloads": -1, "filename": "SkewT-1.1.0.tar.gz", "has_sig": false, "md5_digest": "119c2ecb35ae95fe8bb35a7cd2bd9397", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52915, "upload_time": "2015-06-18T06:59:29", "url": "https://files.pythonhosted.org/packages/f4/8b/f26efabecbf1f4881f454d35301c56578a3696d3dfcefce09c1c69cbb462/SkewT-1.1.0.tar.gz" } ] }