diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..b096670658548fc0208da0ca37094c11dad9a465 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +monoliths +*.pyc +app.log diff --git a/.project b/.project new file mode 100644 index 0000000000000000000000000000000000000000..ea8fb00a70ad010ddef6dcffae4a5f009450738f --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + wsm.rest + + + + + + org.python.pydev.PyDevBuilder + + + + + + org.python.pydev.pythonNature + + diff --git a/.pydevproject b/.pydevproject new file mode 100644 index 0000000000000000000000000000000000000000..d001f0aea3182eccfe8a03d36024cdcb60a4e7ac --- /dev/null +++ b/.pydevproject @@ -0,0 +1,5 @@ + + +Default +python interpreter + diff --git a/rest/RESTServer.wsgi b/RESTServer.wsgi similarity index 100% rename from rest/RESTServer.wsgi rename to RESTServer.wsgi diff --git a/africa/assets/js/tour.js b/africa/assets/js/tour.js deleted file mode 100644 index f23db46318dc56ef2b0bee3937fb8363506ee422..0000000000000000000000000000000000000000 --- a/africa/assets/js/tour.js +++ /dev/null @@ -1,208 +0,0 @@ -// JavaScript Document -/* - * soils layer - * - * Copyright (c) 2013 Pascal Herijgers - * Eigenveren.nl - * - * Version: 1.0 () - * Requires: jQuery v1.8.0 - * Requires: Google Maps JavaScript API v3 - * - * Modified by: Jorge S. Mendes de Jesus - * ISRIC - World Soil Information - */ - - -/*STARTIN POINT - HACK GOOGLE REQUEST FOR panoid */ -var panoramaOptions = { - pano: '0yULvdzU1A0AAAQvOixlLg', - pov: {heading: 390,pitch: 0,zoom: 1.0}, - visible: true, - }; - -var panoWidth ; -var panoHeight; -var workItems; -soilinfo = [ - 'Info', - 'Details', - 'Description', - 'Video' - ]; - -var panorama; -var displayItems; - -function setWorkItems(){ - - workItems = $.grep(displayItems, function(n) { - - return (n.pano == panorama.getPano() ); - }); - - $('[id^="item"]').remove(); - - for (var i = 0; i < workItems.length; i++) { - - str = '
' + soilinfo[workItems[i].icon] + '
'; - $('#soils').append(str); - - } - window.setTimeout(function (){google.maps.event.trigger(panorama, 'pov_changed')}, 500); -//cant get a proper trigger to display the content -}; //end setWorkItems END OF SCRIPT LOGIC - - -function readSettings(){ - $.ajax({ - global: false, - type: "GET", - cache: false, - dataType: "json", - url: "assets/tour/leuven_tour.json", - success: function (data) { - // file not foundgi - if (data === false) { - console.log('Cannot load file:' + inputFile + '.json'); - return; - } - displayItems = data; - setWorkItems(); //callback jump - }, - error: function (jqXHR, textStatus, errorThrown) { - //maybe bit to extreme.. - document.write(jqXHR.responseText); - }, - async: true - }); -} //end of read settings; // - - -function addEvents(){ - - google.maps.event.addListener(panorama, 'pano_changed', function() { - - //http://10.75.13.42:8000/index_tour.html - //pov forceren om letter te laten zien - var hHeading = panorama.getPov().heading; - var hPitch = panorama.getPov().pitch; - panorama.setPov({heading: hHeading, pitch: hPitch}); - try{ - setWorkItems(); - } catch(err) { - console.log(err) - } - }); //end of pano_changed event - - google.maps.event.addListener(panorama, 'pov_changed', function() { - //console.log(panorama) - heading = panorama.getPov().heading; - pitch = panorama.getPov().pitch; - var hSetting = 0, // heading uit de file - vSetting = 0, // pitch uit de file - left = 0, // hulpvar voor left waarbij 360 graden rond verwerkt is - right = 0, // hulpvar voor right waarbij 360 graden rond verwerkt is - leftPos = 0, // hulpvar voor berekende left position - topPos = 0, // hulpvar voor berekende top position - factor = 0, // hulpvar voor horizontale sinus correctie - corrFactor = 0, // hulpvar voor horizontale sinus correctie - aspectRatio = 0, // aspectratio van pano - corrFactorPitch = 0, // hulpvar voor pitch rekning houdend met verschillende viewport aspectratio's - corrPitch = 0, // hulpvar voor pitch rekning houdend met verschillende viewport aspectratio's - widthItem = 0, // breedte van item dat getoond wordt - heightItem = 0; // hoogte van item dat getoond wordt - zoomLevel = panorama.getZoom();// het zoomlevel - var zoomCorrH = Math.pow(1.75, zoomLevel - 1); // correctie heading ivm zoom - var zoomCorrP = Math.pow(1.95, zoomLevel - 1); // correctie pitch ivm zoom - - if (panoWidth > panoHeight) { - aspectRatio = panoWidth / panoHeight; - } else { - aspectRatio = panoHeight / panoWidth; - } - //berekenen van verticale aanpassing ivm andere viewport bij andere aspectratio - corrFactorPitch = 50 + 5 * Math.pow(aspectRatio, 2) - 2; - corrPitch = panoHeight / panoWidth * corrFactorPitch; - //start try here - try { - for (var i = 0; i < workItems.length; i++) { - hSetting = parseFloat(workItems[i].heading); - vSetting = parseFloat(workItems[i].pitch); - left = hSetting - (45 / zoomCorrH); - right = hSetting + (45 / zoomCorrH); - - if (left < 0) { - left = 360 + left; - } - if (right > 360) { - right = right - 360; - } - if (heading < 0) { - heading = 360 + heading; - } - // this was missing and therefore - if (heading > 360) { - heading = heading -360; - } - if (left > right) { - if (heading < (90 / zoomCorrH)) { - - heading = heading + 360; - } - right = right + 360; - } - - widthItem = document.getElementById('item'+i).clientWidth; - - //right > heading - if (left < heading ) { - - document.getElementById('item'+i).style.display = 'block'; - //berekenen van horizontale correctie - factor = 1.0*((heading - left) / (90 / zoomCorrH)); - - corrFactor = 1 + (Math.sin( 2 * Math.PI * factor) / 30);//change to 30 seems to be better - leftPos = panoWidth - Math.round( factor * corrFactor * panoWidth ); - - document.getElementById('item'+i).style.left = leftPos.toString()+'px'; - heightItem = document.getElementById('item'+i).clientHeight; - if (pitch < (vSetting + (corrPitch / zoomCorrP) ) && pitch > (vSetting - (corrPitch / zoomCorrP))) { - - topPos = panoHeight - Math.abs( Math.round( ((pitch - vSetting - (corrPitch / zoomCorrP) ) / ((corrPitch * 2 - 2) / zoomCorrP)) * panoHeight ) ); - document.getElementById('item'+i).style.top = topPos.toString()+'px'; - } else { - document.getElementById('item'+i).style.display = 'none'; - } - } - else { - document.getElementById('item'+i).style.display = 'none'; - } - } //end of for loop - - } catch(err) { - //do nothing - };//try for IE - - - }); //end of pov end - - //Necessary reajust when zoom is changed - google.maps.event.addListener(panorama, 'zoom_changed', function(){google.maps.event.trigger(panorama, 'pov_changed')}) - -}; // end addevents - - -function initTour(){ - //jQuery( document ).ready(function() { - panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions); - panoWidth = document.getElementById('pano').offsetWidth; - panoHeight = document.getElementById('pano').offsetHeight; - - addEvents(); - readSettings(); - - //}); - - -} \ No newline at end of file diff --git a/africa/assets/tour/detail.png b/africa/assets/tour/detail.png deleted file mode 100644 index eafa6db7b253b49b8ffb1cbf66adbff616ed30d3..0000000000000000000000000000000000000000 Binary files a/africa/assets/tour/detail.png and /dev/null differ diff --git a/africa/assets/tour/info.png b/africa/assets/tour/info.png deleted file mode 100644 index cda82602424f9165336f977194e441455ceeb748..0000000000000000000000000000000000000000 Binary files a/africa/assets/tour/info.png and /dev/null differ diff --git a/africa/assets/tour/leuven_tour.json b/africa/assets/tour/leuven_tour.json deleted file mode 100644 index d6aaf2c7b5133af2fff54c2e9c31c3b48b6813a9..0000000000000000000000000000000000000000 --- a/africa/assets/tour/leuven_tour.json +++ /dev/null @@ -1,505 +0,0 @@ -[ - { - "monolith": "understanding soil nr 1 Dystric regosol", - "url": "http://isis.isric.org/monoliths/reference-soil-id010", - "notes": "pic", - "pitch": -30, - "pano": "1yp4pugP5JAAAAQvOiwz0g", - "heading": 490, - "icon": 0.0 - }, - { - "monolith": "understanding soil 2 Gleyic acrisol", - "url": "http://isis.isric.org/monoliths/reference-soil-ng015", - "notes": "pic", - "pitch":-30, - "pano": "1yp4pugP5JAAAAQvOiwz0g", - "heading": 420, - "icon": 0.0 - }, - { - "monolith": "understanding soilvolgnr3 Vertisol", - "url": "http://isis.isric.org/monoliths/reference-soil-zw006", - "notes": "pic", - "pitch": -30, - "pano": "GRAhZRLHDPEAAAQvOi1DOg", - "heading": 485, - "icon": 0.0 - }, - { - "monolith": "understanding soilvolgnr 4", - "url": "http://isis.isric.org/monoliths/reference-soil-hu020", - "notes": "pic", - "pitch": -30, - "pano": "GRAhZRLHDPEAAAQvOi1DOg", - "heading": 430, - "icon": 0.0 - }, - { - "monolith": "What are soils made of 5", - "url": "http://isis.isric.org/monoliths/reference-soil-eak11", - "notes": "pic", - "pitch": -30, - "pano": "vH3gxHh52DgAAAQvOiqBsg", - "heading": 415, - "icon": 0.0 - }, - { - "monolith": "What are soils made of 6", - "url": "http://isis.isric.org/monoliths/reference-soil-ng004", - "notes": "pic", - "pitch": -30, - "pano": "vH3gxHh52DgAAAQvOiqBsg", - "heading": 425, - "icon": 0.0 - }, - { - "monolith": "What are soils made of 7", - "url": "http://isis.isric.org/monoliths/reference-soil-nig22", - "notes": "pic", - "pitch": -30, - "pano": "vH3gxHh52DgAAAQvOiqBsg", - "heading": 485, - "icon": 0.0 - }, - { - "monolith": "What are soils made of 8", - "url": "http://isis.isric.org/monoliths/reference-soil-jm004", - "notes": "pic", - "pitch": -30, - "pano": "vH3gxHh52DgAAAQvOiqBsg", - "heading": 495, - "icon":0.0 - }, - { - "monolith": "vitrine 9 Arenosol", - "url": "http://isis.isric.org/monoliths/reference-soil-ml006", - "notes": "pic", - "pitch": -30, - "pano": "XBpMl7XEPCQAAAQvOiqBsw", - "heading": 480, - "icon": 0.0 - } , - { - "monolith": "vitrine 10 Ferralsol", - "url": "http://isis.isric.org/monoliths/reference-soil-ga004", - "notes": "pic", - "pitch": -30, - "pano": "XBpMl7XEPCQAAAQvOiqBsw", - "heading":490, - "icon": 0.0 - } , - - { - "monolith": "Forest CD1 Xantic ferralsol 11", - "url": "http://isis.isric.org/monoliths/reference-soil-cd001", - "notes": "pic", - "pitch": -30, - "pano": "GMBH_aycTdsAAAQvOiloKA", - "heading": 340, - "icon": 0.0 - } , - { - "monolith": "Agroforestry", - "url": "pdf/Atlas-focus-04_A3.pdf", - "notes": "pic", - "pitch":10, - "pano": "GMBH_aycTdsAAAQvOiloKA", - "heading": 306, - "icon": 2.0 - } , - { - "monolith": "Termites", - "url": "pdf/Atlas-focus-02_A3.pdf", - "notes": "pic", - "pitch":-15, - "pano": "sVcHNOIcnhkAAAQvOisMmg", - "heading": 470, - "icon": 2.0 - } , - { - "monolith": "Agroforestry", - "url": "pdf/Atlas-focus-02_A3.pdf", - "notes": "pic", - "pitch":-11, - "pano": "iN5PlwpDWCYAAAQvOi1DPw", - "heading": 423, - "icon": 2.0 - } , - { - "monolith": "vitrine rare vormen bovenste", - "url": "images/leuven_tour/spinshape.jpg", - "notes": "pic", - "pitch":5, - "pano": "iN5PlwpDWCYAAAQvOi1DPw", - "heading": 52, - "icon": 1.0 - } , - { - "monolith": "vitrine rare vormen onder 1", - "url": "images/leuven_tour/Rechts_majorSoilscapes.jpg", - "notes": "pic", - "pitch":-10, - "pano": "iN5PlwpDWCYAAAQvOi1DPw", - "heading": 32, - "icon": 1.0 - } , - { - "monolith": "vitrine rare vormen onder 2", - "url": "images/leuven_tour/Paddestoelvorm.jpg", - "notes": "pic", - "pitch":-10, - "pano": "iN5PlwpDWCYAAAQvOi1DPw", - "heading": 42, - "icon": 1.0 - } , - { - "monolith": "vitrine rare vormen onder 3", - "url": "images/leuven_tour/Gedrochten.jpg", - "notes": "pic", - "pitch":-10, - "pano": "iN5PlwpDWCYAAAQvOi1DPw", - "heading": 52, - "icon": 1.0 - } , - { - "monolith": "Soilscapes of African mountains 12 KE39", - "url": "http://isis.isric.org/monoliths/reference-soil-ke039", - "notes": "pic", - "pitch": -30, - "pano": "SMlqfFM4VCcAAAQvOi1DOw", - "heading": 342, - "icon": 0.0 - }, - { - "monolith": "The trouble with vertisols", - "url": "pdf/Atlas-focus-05_A3.pdf", - "notes": "pic", - "pitch":-15, - "pano": "SMlqfFM4VCcAAAQvOi1DOw", - "heading": -44, - "icon": 2.0 - } , - { - "monolith": "Soilscapes of African mountains 13 KE44 Nitisol", - "url": "http://isis.isric.org/monoliths/reference-soil-ke044", - "notes": "pic", - "pitch": -30, - "pano": "SMlqfFM4VCcAAAQvOi1DOw", - "heading": 400, - "icon": 0.0 - }, - { - "monolith": "Soilscapes of African mountains 14 KE70 vertisol", - "url": "http://isis.isric.org/monoliths/reference-soil-ke070", - "notes": "pic", - "pitch": -30, - "pano": "SMlqfFM4VCcAAAQvOi1DOw", - "heading": 410, - "icon": 0.0 - }, - { - "monolith": "What is a color", - "url": "pdf/Atlas-focus-01_A3.pdf", - "notes": "pic", - - "pitch":-15, - "pano": "XBpMl7XEPCQAAAQvOiqBsw", - "heading":96, - "icon": 2.0 - } , - - { - "monolith": " 1e vitrine voor hoek, naast color", - "url": "images/leuven_tour/ropy_lava.jpg", - "notes": "pic", - "pitch":-28.02923029837742, - "pano": "XBpMl7XEPCQAAAQvOiqBsw", - "heading":410, - "icon": 1.0 - } , - { - "monolith": " 1e vitrine voor hoek, naast color vanuit hoek gezien", - "url": "images/leuven_tour/ropy_lava.jpg", - "notes": "pic", - "pitch":-25, - "pano": "zCAQow75uOoAAAQvOiloLA", - "heading":135, - "icon": 1.0 - } , - { - "monolith": " 1e vitrine voor hoek, naast color vanuit hoek gezien", - "url": "images/leuven_tour/Plinthite.jpg", - "notes": "pic", - "pitch":-20, - "pano": "zCAQow75uOoAAAQvOiloLA", - "heading":130, - "icon": 1.0 - } , - { - "monolith": "Stenen vitrine bij what is in a color", - "url": "/images/leuven_tour/Plinthite.jpg", - "notes": "pic", - "pitch": -20, - "pano": "XBpMl7XEPCQAAAQvOiqBsw", - "heading": 410, - "icon": 1.0 - }, - { - "monolith": "open stenen tafel", - "url": "images/leuven_tour/Bauxite.jpg", - "notes": "pic", - "pitch": -10, - "pano": "zCAQow75uOoAAAQvOiloLA", - "heading": -2, - "icon": 1.0 - } , - - - - { - "monolith": "Soilscapes of the Sahel and Savannah zone 16", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/HU-021-def.jpg", - "notes": "pic", - "pitch": -30, - "pano": "sVcHNOIcnhkAAAQvOisMmg", - "heading": 400, - "icon": 0.0 - } , - { - "monolith": "Soilscapes of the Sahel and Savannah zone 17", - "url": "http://isis.isric.org/monoliths/reference-soil-ng016", - "notes": "pic", - "pitch": -30, - "pano": "sVcHNOIcnhkAAAQvOisMmg", - "heading": 410, - "icon": 0.0 - } , - { - "monolith": "Soilscapes of the Sahel and Savannah zone 18", - "url": "http://isis.isric.org/monoliths/reference-soil-ke003", - "notes": "pic", - "pitch": -30, - "pano": "sVcHNOIcnhkAAAQvOisMmg", - "heading": 320, - "icon": 0.0 - } , - { - "monolith": "Soilscapes of the Sahel and Savannah zone 18", - "url": "http://isis.isric.org/monoliths/reference-soil-ke003", - "notes": "pic", - "pitch": -30, - "pano": "hNlnVEO_8ycAAAQvOiloKw", - "heading": 400, - "icon": 0.0 - } , - - { - "monolith": "--ferralsol,plinthosol,plinthosol 19 NIG 021", - "url": "http://isis.isric.org/monoliths/reference-soil-ng021", - "notes": "pic", - "pitch": -30, - "pano": "a61Npy-PHokAAAQvOiPUPg", - "heading": 353, - "icon": 0.0 - }, - { - "monolith": "ferralsol,--plinthosol,plinthosol 20ZW11", - "url": "http://isis.isric.org/monoliths/reference-soil-zw011", - "notes": "pic", - "pitch": -30, - "pano": "a61Npy-PHokAAAQvOiPUPg", - "heading": 363, - "icon": 0.0 - }, - { - "monolith": "Unforgiving iron", - "url": "pdf/Atlas-focus-06_A3.pdf", - "notes": "pic", - "pitch":-29, - "pano": "a61Npy-PHokAAAQvOiPUPg", - "heading": 39, - "icon": 2.0 - } , - - { - "monolith": "laatste vitrine", - "url": "images/leuven_tour/plinthite.jpg", - "notes": "pic", - "pitch":-6, - "pano": "a61Npy-PHokAAAQvOiPUPg", - "heading":42, - "icon": 1.0 - } , - { - "monolith": "laatste vitrine", - "url": "images/leuven_tour/bauxiet-ra.jpg", - "notes": "pic", - "pitch":-6, - "pano": "a61Npy-PHokAAAQvOiPUPg", - "heading":50, - "icon": 1.0 - } , - { - "monolith": "laatste vitrine", - "url": "images/leuven_tour/bauxiet-rv.jpg", - "notes": "pic", - "pitch":-8, - "pano": "a61Npy-PHokAAAQvOiPUPg", - "heading":50, - "icon": 1.0 - } , - { - "monolith": "ferralsol,plinthosol,--plinthosol 21 ML007", - "url": "http://isis.isric.org/monoliths/reference-soil-ml007", - "notes": "pic", - "pitch": -30, - "pano": "a61Npy-PHokAAAQvOiPUPg", - "heading": 375, - "icon": 0.0 - }, - { - "monolith": "Soilscapes of the Sahel and Savannah zone 22", - "url": "http://isis.isric.org/monoliths/reference-soil-ga002", - "notes": "pic", - "pitch": -30, - "pano": "hNlnVEO_8ycAAAQvOiloKw", - "heading": 330, - "icon": 0.0 - } , - { - "monolith": "Soilscapes of the Sahel and Savannah zone 23", - "url": "http://isis.isric.org/monoliths/reference-soil-mz006", - "notes": "pic", - "pitch": -30, - "pano": "hNlnVEO_8ycAAAQvOiloKw", - "heading": 338, - "icon": 0.0 - } , - { - "monolith": "Food or Cashcrops", - "url": "pdf/Atlas-focus-07_A3.pdf", - "notes": "pic", - "pitch":4, - "pano": "hNlnVEO_8ycAAAQvOiloKw", - "heading": -52, - "icon": 2.0 - } , - - - { - "monolith": "video", - "url": "http:/museum.isric.org/sites/default/files/videos/original/all_interviews_compressed.mp4", - "notes": "pic", - "pitch": -23.24082073344907, - "pano": "3phuMq4AzRgAAAQvOisMoA", - "heading": 276.04699738903383, - "icon": 3.0 - }, - { - "monolith": "River Valleys and Wetlands nr 24 Fluvisol Mali", - "url": "http://isis.isric.org/monoliths/reference-soil-ml005", - "notes": "pic", - "pitch": -30, - "pano": "xhkLI3QNFbcAAAQvOisMnQ", - "heading": 330.04699738903383, - "icon": 0.0 - }, - { - "monolith": "River Valleys and Wetlands nr 25 Gleysol", - "url": "http://isis.isric.org/monoliths/reference-soil-zw007", - "notes": "pic", - "pitch": -30, - "pano": "xhkLI3QNFbcAAAQvOisMnQ", - "heading": 222, - "icon": 0.0 - }, - { - "monolith": "video2", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/HU-019-def.jpg", - "notes": "pic", - "pitch": -23.24082073344907, - "pano": "gTwhDbpqOwAAAQvOixlMA", - "heading": 291.04699738903383, - "icon": 3.0 - }, - - { - "monolith": "When good soils turn bad", - "url": "pdf/Atlas-focus-08_A3.pdf", - "notes": "pic", - "pitch": -27, - "pano": "CgTwhDbpqOwAAAQvOixlMA", - "heading": 310, - "icon": 2.0 - }, - { - "monolith": "fluvisol monolith ID42 volgnr26", - "url": "http://isis.isric.org/monoliths/reference-soil-id042", - "notes": "pic", - "pitch": -30, - "pano": "CgTwhDbpqOwAAAQvOixlMA", - "heading": 291.04699738903383, - "icon": 0.0 - }, - { - "monolith": "Soilscapes of the Deserts 27PE003", - "url": "http://isis.isric.org/monoliths/reference-soil-pe003", - "notes": "pic", - "pitch": -30.24082073344907, - "pano": "aDNBHZJFH7cAAAQvOiloLw", - "heading": 318, - "icon": 0.0 - } , - { - "monolith": "Mediterranean nr 28 Stagnic solonetz KE013", - "url": "http://isis.isric.org/monoliths/reference-soil-ke013", - "pitch": -14.24082073344907, - "pano": "aDNBHZJFH7cAAAQvOiloLw", - "heading": 201.04699738903383, - "icon": 0.0 - }, - { - "monolith": "Early man", - "url": "pdf/Atlas-focus-09_EarlyMan.pdf", - "notes": "pic", - "pitch":0, - "pano": "aDNBHZJFH7cAAAQvOiloLw", - "heading": 215, - "icon": 2.0 - } , - { - "monolith": "vitrine botten", - "url": "images/leuven_tour", - "notes": "pic", - "pitch":-20, - "pano": "aDNBHZJFH7cAAAQvOiloLw", - "heading": 222, - "icon": 1.0 - } , - { - "monolith": "Mediterranean nr 29 Luvisol BW006", - "url": "http://isis.isric.org/monoliths/reference-soil-bw006", - "pitch": -26.24082073344907, - "pano": "NueoeYA1jlIAAAQvOiaAsw", - "heading": 315.04699738903383, - "icon": 0.0 - }, - { - "monolith": "Against the odds", - "url": "pdf/Atlas-focus-03_A3.pdf", - "notes": "pic", - "pitch":-33, - "pano": "COMU-D_NLnAAAAQvOisMnA", - "heading": 273, - "icon": 2.0 - } , - { - "monolith": "Mediterranean nr 30 Calcisol", - "url": "http://isis.isric.org/monoliths/reference-soil-na011", - "pitch": -30, - "pano": "NueoeYA1jlIAAAQvOiaAsw", - "heading": 238, - "icon": 0.0 - } -] \ No newline at end of file diff --git a/africa/assets/tour/missing_content.json b/africa/assets/tour/missing_content.json deleted file mode 100644 index a62a66b8e374c80ad91eeb75493ca3921b310e30..0000000000000000000000000000000000000000 --- a/africa/assets/tour/missing_content.json +++ /dev/null @@ -1,225 +0,0 @@ - { - "monolith": "NL-013", - "url": "http://isis.isric.org/monoliths/reference-soil-nl013", - "notes": "info", - "pitch": 15.3329162694, - "pano": "ovF0k8npZ9gAAAQfDk4kxg", - "heading": 218.75, - "icon": 0.0 - } , - { - "monolith": "NL-059", - "url": "http://isis.isric.org/monoliths/reference-soil-nl059", - "notes": "info", - "pitch": 5.3329162694, - "pano": "ovF0k8npZ9gAAAQfDk4kxg", - "heading": 268.8, - "icon": 0.0 - } - , { - "monolith": "NL-005", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/NL-005-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "RS2agh6h9s0AAAQfDk3gOQ", - "heading": 255.0, - "icon": 1.0 - }, { - "monolith": "NL-058", - "url": "http://isis.isric.org/monoliths/reference-soil-nl058", - "notes": "info", - "pitch": 8.3329162694, - "pano": "lYeDBm3QmqkAAAQfDk_Tkg", - "heading": 217.8, - "icon": 0.0 - }, { - "monolith": "CU-016", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/CU-016-def.jpg", - "notes": "pic", - "pitch": 1.2251899318, - "pano": "lYeDBm3QmqkAAAQfDk_Tkg", - "heading": 129.8, - "icon": 1.0 - }, { - "monolith": "CN-016", - "url": "http://isis.isric.org/monoliths/reference-soil-cn016", - "notes": "info", - "pitch": 5.3329162694, - "pano": "mz1LZ4yifBQAAAQfDk3gNQ", - "heading": 200.8, - "icon": 0.0 - }, { - "monolith": "GM-045", - "url": "http://isis.isric.org/monoliths/reference-soil-gm045", - "notes": "info", - "pitch": 5.3329162694, - "pano": "mz1LZ4yifBQAAAQfDk3gNQ", - "heading": 183.0, - "icon": 0.0 - }, { - "monolith": "CU-016", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/CU-016-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "mz1LZ4yifBQAAAQfDk3gNQ", - "heading": 200.8, - "icon": 1.0 - }, { - "monolith": "CU-015", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/CU-015-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "ZCJUt5JAgggAAAQfDk3gNw", - "heading": 196.8, - "icon": 1.0 - }, { - "monolith": "KE-018", - "url": "http://isis.isric.org/monoliths/reference-soil-ke18", - "notes": "info", - "pitch": 5.3329162694, - "pano": "cu6e26omasQAAAQfDk4kww", - "heading": 88.0, - "icon": 0.0 - }, { - "monolith": "KE-018", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/KE-018-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "cu6e26omasQAAAQfDk4kww", - "heading": 88.0, - "icon": 1.0 - }, { - "monolith": "ES-006", - "url": "http://isis.isric.org/monoliths/reference-soil-es006", - "notes": "info", - "pitch": 14.3329162694, - "pano": "nvMkl_p26s8AAAQfDk4kxQ", - "heading": 56.6, - "icon": 0.0 - }, { - "monolith": "IC-001", - "url": "http://isis.isric.org/monoliths/reference-soil-ic001", - "notes": "info", - "pitch": 5.3329162694, - "pano": "ck5jzcqoQ84AAAQfDkzaDQ", - "heading": 55.3, - "icon": 0.0 - }, { - "monolith": "IC-001", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/IC-001-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "ck5jzcqoQ84AAAQfDkzaDQ", - "heading": 55.3, - "icon": 1.0 - }, - { - "monolith": "JM-007", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/JM-007-def.jpg", - "notes": "pic", - "pitch": 2.2251899318, - "pano": "AFUpAYmixzcAAAQfDkzaDA", - "heading": 108.0, - "icon": 1.0 - }, { - "monolith": "CN-026", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/CN-026-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "AFUpAYmixzcAAAQfDkzaDA", - "heading": 38.1, - "icon": 1.0 - }, - { - "monolith": "NL-041", - "url": "http://isis.isric.org/monoliths/reference-soil-nl041", - "notes": "info", - "pitch": 5.3329162694, - "pano": "TohfSYd_qdAAAAQfDk4kwg", - "heading": 81.2, - "icon": 0.0 - }, - { - "monolith": "NL-041", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/NL-041-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "TohfSYd_qdAAAAQfDk4kwg", - "heading": 81.2, - "icon": 1.0 - }, { - "monolith": "KE-033", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/KE-033-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "TohfSYd_qdAAAAQfDk4kwg", - "heading": 62.5, - "icon": 1.0 - }, - { - "monolith": "BR-013", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/BR-013-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "JGr69J7Tj3gAAAQfDkzaDw", - "heading": 47.5, - "icon": 1.0 - }, { - "monolith": "FI-003", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/FI-003-def.jpg", - "notes": "pic", - "pitch": 0.2251899318, - "pano": "JGr69J7Tj3gAAAQfDkzaDw", - "heading": 36.1, - "icon": 1.0 - }, { - "monolith": "AU-011", - "url": "http://isis.isric.org/monoliths/reference-soil-au11", - "notes": "info", - "pitch": -2.3329162694, - "pano": "8ELtrKBqZZIAAAQfDkzaCw", - "heading": 13.9, - "icon": 0.0 - }, { - "monolith": "AU-011", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/AU-011-def.jpg", - "notes": "pic", - "pitch": -7.2251899318, - "pano": "8ELtrKBqZZIAAAQfDkzaCw", - "heading": 13.9, - "icon": 1.0 - }, - { - "monolith": "AU-028", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/AU-028-def.jpg", - "notes": "pic", - "pitch": -15.2251899318, - "pano": "8ELtrKBqZZIAAAQfDkzaCw", - "heading": -48.7, - "icon": 1.0 - }, { - "monolith": "AU-014", - "url": "http://isis.isric.org/monoliths/reference-soil-au14", - "notes": "info", - "pitch": 1.3329162694, - "pano": "8ELtrKBqZZIAAAQfDkzaCw", - "heading": -58.0, - "icon": 0.0 - }, { - "monolith": "AU-012", - "url": "http://rest.museum2.isric.org/monoliths/original/jpg/AU-012-def.jpg", - "notes": "pic", - "pitch": -5.2251899318, - "pano": "8ELtrKBqZZIAAAQfDkzaCw", - "heading": -71.0, - "icon": 1.0 - }, - { - "monolith": "AU-012", - "url": "http://isis.isric.org/monoliths/reference-soil-au12", - "notes": "info", - "pitch": -10.3329162694, - "pano": "8ELtrKBqZZIAAAQfDkzaCw", - "heading": -71.0, - "icon": 0.0 - }, \ No newline at end of file diff --git a/africa/assets/tour/pdf.png b/africa/assets/tour/pdf.png deleted file mode 100644 index d6489355d9ce7bc1e1e32c8198e47afed7e598e2..0000000000000000000000000000000000000000 Binary files a/africa/assets/tour/pdf.png and /dev/null differ diff --git a/africa/assets/tour/youtube.png b/africa/assets/tour/youtube.png deleted file mode 100644 index 891395a776cb9ed20fea9cfbcc78dbe236ccdf97..0000000000000000000000000000000000000000 Binary files a/africa/assets/tour/youtube.png and /dev/null differ diff --git a/africa/images/leuven_tour/Bauxite.jpg b/africa/images/leuven_tour/Bauxite.jpg deleted file mode 100644 index c577e31bfe3a78abf43b0b91f70b6e16318f7238..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/Bauxite.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/Gedrochten.jpg b/africa/images/leuven_tour/Gedrochten.jpg deleted file mode 100644 index 670a9e79ef37fecfdd868c398a20fe9470295822..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/Gedrochten.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/KMMA stenen&termitaria.pptx.REMOVED.git-id b/africa/images/leuven_tour/KMMA stenen&termitaria.pptx.REMOVED.git-id deleted file mode 100644 index 8029ffacaa0f4beb882d1c04133339b99b86e367..0000000000000000000000000000000000000000 --- a/africa/images/leuven_tour/KMMA stenen&termitaria.pptx.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -c4b04b2488ba0dd8c35a9ee306ac11c7e534677a \ No newline at end of file diff --git a/africa/images/leuven_tour/Paddestoelvorm.jpg b/africa/images/leuven_tour/Paddestoelvorm.jpg deleted file mode 100644 index e272d36e2517a31ee39540836c96b4f67ee7d90f..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/Paddestoelvorm.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/Plinthite.jpg b/africa/images/leuven_tour/Plinthite.jpg deleted file mode 100644 index d648cdb0a905d90d42e943d5a4dae2559019b431..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/Plinthite.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/Rechts_majorSoilscapes.jpg b/africa/images/leuven_tour/Rechts_majorSoilscapes.jpg deleted file mode 100644 index 45b9cecf79df31896b8dece283ef35010d298474..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/Rechts_majorSoilscapes.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/basalt.jpg b/africa/images/leuven_tour/basalt.jpg deleted file mode 100644 index 962460acce9b590313128b74898034321ebb33c5..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/basalt.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/bauxiet-ra.jpg b/africa/images/leuven_tour/bauxiet-ra.jpg deleted file mode 100644 index 936700aefc906b8e91c933c53866c1f244607fc8..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/bauxiet-ra.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/bauxiet-rv.jpg b/africa/images/leuven_tour/bauxiet-rv.jpg deleted file mode 100644 index f94f1f1d6bffdd25dc74c3bc7a85c7f65a2e4b64..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/bauxiet-rv.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/chlorite.jpg b/africa/images/leuven_tour/chlorite.jpg deleted file mode 100644 index ff5db48a40102806544b549306aafc4723d0a242..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/chlorite.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/dolomite.jpg b/africa/images/leuven_tour/dolomite.jpg deleted file mode 100644 index 5a6c38ae55cb6ad8d22dbf2faaaf4ca5e99afe4b..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/dolomite.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/lapili.jpg b/africa/images/leuven_tour/lapili.jpg deleted file mode 100644 index 3d0dedbd40bb7e4509965fbad4f25a31e8b57248..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/lapili.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/ropy_lava.jpg b/africa/images/leuven_tour/ropy_lava.jpg deleted file mode 100644 index f85a939c964247e3eaf8ee7b02bd9f8f6760b1d4..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/ropy_lava.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/sandstone.jpg b/africa/images/leuven_tour/sandstone.jpg deleted file mode 100644 index 3ed7358e02fb893d51c763c1e626e0d8330d7331..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/sandstone.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/spinshape.jpg b/africa/images/leuven_tour/spinshape.jpg deleted file mode 100644 index 57ae49d6f153713c7ff8cb7c0c3765e7690e67f0..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/spinshape.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/tuff.jpg b/africa/images/leuven_tour/tuff.jpg deleted file mode 100644 index e14d20d6611f7f65eb7cabac367084bac402219f..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/tuff.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/vesicular_lava.jpg b/africa/images/leuven_tour/vesicular_lava.jpg deleted file mode 100644 index c7bb7b3a9257d563ee77051c7d071bf17767bb86..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/vesicular_lava.jpg and /dev/null differ diff --git a/africa/images/leuven_tour/volcanic_pumice.jpg b/africa/images/leuven_tour/volcanic_pumice.jpg deleted file mode 100644 index 27b9d4228b48461eaa661cafb72930996ca1a924..0000000000000000000000000000000000000000 Binary files a/africa/images/leuven_tour/volcanic_pumice.jpg and /dev/null differ diff --git a/africa/pdf/Atlas-focus-01_A3.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-01_A3.pdf.REMOVED.git-id deleted file mode 100644 index ba6053405dcd4594c6e0c7713df666af5858fb05..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-01_A3.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -48ab1fa4417a554a5d91612575d1fe4e897ceace \ No newline at end of file diff --git a/africa/pdf/Atlas-focus-02_A3.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-02_A3.pdf.REMOVED.git-id deleted file mode 100644 index 3acd06d870dccef07479ec121bc540ec072c0d96..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-02_A3.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -205bed543d64469bde6b2c77e0728c5c1f119683 \ No newline at end of file diff --git a/africa/pdf/Atlas-focus-03_A3.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-03_A3.pdf.REMOVED.git-id deleted file mode 100644 index 1ea63b900669a790588b154d0f1d65623f40c1ff..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-03_A3.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -5d940309c3148b1b4b72502fcfd673459dac8c17 \ No newline at end of file diff --git a/africa/pdf/Atlas-focus-04_A3.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-04_A3.pdf.REMOVED.git-id deleted file mode 100644 index 609c05f0ab1d7cca893e49b19be1c95ace8a5bc3..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-04_A3.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -a2a6747686645e4403d283d5d3420db5ea43d105 \ No newline at end of file diff --git a/africa/pdf/Atlas-focus-05_A3.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-05_A3.pdf.REMOVED.git-id deleted file mode 100644 index cd0dbd30d7bb225fc7b6953ad84e3df22c1de777..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-05_A3.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -f309840502e655e4b3e49d3824b01b5622b7ddaa \ No newline at end of file diff --git a/africa/pdf/Atlas-focus-06_A3.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-06_A3.pdf.REMOVED.git-id deleted file mode 100644 index f707fcaea9cc6844431172c3cd62a64636587d28..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-06_A3.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -71935809466f810f0d8cdc5ebb6e487ba8d79496 \ No newline at end of file diff --git a/africa/pdf/Atlas-focus-07_A3.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-07_A3.pdf.REMOVED.git-id deleted file mode 100644 index c0f193928383ccae53e8033e85d86abdb50c607c..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-07_A3.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -aca9be9d0cd4db770c95e9d429e15a492cbae9b8 \ No newline at end of file diff --git a/africa/pdf/Atlas-focus-08_A3.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-08_A3.pdf.REMOVED.git-id deleted file mode 100644 index 03a4964ab54c658714946bc0a2ce2207a2c9994f..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-08_A3.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -ccc750c512522f85e1beedab971a7a447301a5ef \ No newline at end of file diff --git a/africa/pdf/Atlas-focus-09_EarlyMan.pdf.REMOVED.git-id b/africa/pdf/Atlas-focus-09_EarlyMan.pdf.REMOVED.git-id deleted file mode 100644 index 3103a9f34353177dc4f638b515af3e9f3c4bbc7a..0000000000000000000000000000000000000000 --- a/africa/pdf/Atlas-focus-09_EarlyMan.pdf.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -e52bae4759a4caae84c210d204d25a516188cf0c \ No newline at end of file diff --git a/rest/appWSM.py b/appWSM.py similarity index 100% rename from rest/appWSM.py rename to appWSM.py diff --git a/appWSM/bin/activate b/appWSM/bin/activate new file mode 100644 index 0000000000000000000000000000000000000000..c639494757320bc7acf25855ece5dac7b9656fd5 --- /dev/null +++ b/appWSM/bin/activate @@ -0,0 +1,78 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + unset -f pydoc >/dev/null 2>&1 + + # reset old environment variables + # ! [ -z ${VAR+_} ] returns true if VAR is declared at all + if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then + PATH="$_OLD_VIRTUAL_PATH" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then + PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then + hash -r 2>/dev/null + fi + + if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then + PS1="$_OLD_VIRTUAL_PS1" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/home/duque004/git/WSM/rest/appWSM" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +if ! [ -z "${PYTHONHOME+_}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then + _OLD_VIRTUAL_PS1="$PS1" + if [ "x" != x ] ; then + PS1="$PS1" + else + PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1" + fi + export PS1 +fi + +# Make sure to unalias pydoc if it's already there +alias pydoc 2>/dev/null >/dev/null && unalias pydoc + +pydoc () { + python -m pydoc "$@" +} + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then + hash -r 2>/dev/null +fi diff --git a/appWSM/bin/activate.csh b/appWSM/bin/activate.csh new file mode 100644 index 0000000000000000000000000000000000000000..bd351c48af216c3f812cf60e1f5a6dc2d9acae88 --- /dev/null +++ b/appWSM/bin/activate.csh @@ -0,0 +1,36 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/duque004/git/WSM/rest/appWSM" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + + +if ("" != "") then + set env_name = "" +else + set env_name = `basename "$VIRTUAL_ENV"` +endif + +# Could be in a non-interactive environment, +# in which case, $prompt is undefined and we wouldn't +# care about the prompt anyway. +if ( $?prompt ) then + set _OLD_VIRTUAL_PROMPT="$prompt" + set prompt = "[$env_name] $prompt" +endif + +unset env_name + +alias pydoc python -m pydoc + +rehash + diff --git a/appWSM/bin/activate.fish b/appWSM/bin/activate.fish new file mode 100644 index 0000000000000000000000000000000000000000..29c33e4528ea0c209b864f80558e547c30ffa38e --- /dev/null +++ b/appWSM/bin/activate.fish @@ -0,0 +1,76 @@ +# This file must be used using `. bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. +# Do not run it directly. + +function deactivate -d 'Exit virtualenv mode and return to the normal environment.' + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. + set -l fish_function_path + + # Erase virtualenv's `fish_prompt` and restore the original. + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + end + + set -e VIRTUAL_ENV + + if test "$argv[1]" != 'nondestructive' + # Self-destruct! + functions -e pydoc + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/duque004/git/WSM/rest/appWSM" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset `$PYTHONHOME` if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +function pydoc + python -m pydoc $argv +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # Copy the current `fish_prompt` function as `_old_fish_prompt`. + functions -c fish_prompt _old_fish_prompt + + function fish_prompt + # Save the current $status, for fish_prompts that display it. + set -l old_status $status + + # Prompt override provided? + # If not, just prepend the environment name. + if test -n "" + printf '%s%s' "" (set_color normal) + else + printf '%s(%s%s%s) ' (set_color normal) (set_color -o white) (basename "$VIRTUAL_ENV") (set_color normal) + end + + # Restore the original $status + echo "exit $old_status" | source + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" +end diff --git a/appWSM/bin/activate_this.py b/appWSM/bin/activate_this.py new file mode 100644 index 0000000000000000000000000000000000000000..f18193bf8109396374fb7811f0f261be27f4c143 --- /dev/null +++ b/appWSM/bin/activate_this.py @@ -0,0 +1,34 @@ +"""By using execfile(this_file, dict(__file__=this_file)) you will +activate this virtualenv environment. + +This can be used when you must use an existing Python interpreter, not +the virtualenv bin/python +""" + +try: + __file__ +except NameError: + raise AssertionError( + "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))") +import sys +import os + +old_os_path = os.environ.get('PATH', '') +os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path +base = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +if sys.platform == 'win32': + site_packages = os.path.join(base, 'Lib', 'site-packages') +else: + site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages') +prev_sys_path = list(sys.path) +import site +site.addsitedir(site_packages) +sys.real_prefix = sys.prefix +sys.prefix = base +# Move the added items to the front of the path: +new_sys_path = [] +for item in list(sys.path): + if item not in prev_sys_path: + new_sys_path.append(item) + sys.path.remove(item) +sys.path[:0] = new_sys_path diff --git a/appWSM/bin/easy_install b/appWSM/bin/easy_install new file mode 100755 index 0000000000000000000000000000000000000000..98aeb7e8949a6acc8471effd712d0cc310e5a4ae --- /dev/null +++ b/appWSM/bin/easy_install @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from setuptools.command.easy_install import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/bin/easy_install-2.7 b/appWSM/bin/easy_install-2.7 new file mode 100755 index 0000000000000000000000000000000000000000..98aeb7e8949a6acc8471effd712d0cc310e5a4ae --- /dev/null +++ b/appWSM/bin/easy_install-2.7 @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from setuptools.command.easy_install import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/bin/flask b/appWSM/bin/flask new file mode 100755 index 0000000000000000000000000000000000000000..ec73ae5d01f0396b966f0902264d1ec3098d6a0d --- /dev/null +++ b/appWSM/bin/flask @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from flask.cli import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/bin/gunicorn b/appWSM/bin/gunicorn new file mode 100755 index 0000000000000000000000000000000000000000..63e16ef190cb512162e8d47763a45a3de2da93db --- /dev/null +++ b/appWSM/bin/gunicorn @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from gunicorn.app.wsgiapp import run + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(run()) diff --git a/appWSM/bin/gunicorn_paster b/appWSM/bin/gunicorn_paster new file mode 100755 index 0000000000000000000000000000000000000000..0425640b2aee2ae7dcb329bfc3886e21c035e271 --- /dev/null +++ b/appWSM/bin/gunicorn_paster @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from gunicorn.app.pasterapp import run + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(run()) diff --git a/appWSM/bin/jsonschema b/appWSM/bin/jsonschema new file mode 100755 index 0000000000000000000000000000000000000000..f8737a7047b3ab223b1e1f9f43d8d84e026a9a2a --- /dev/null +++ b/appWSM/bin/jsonschema @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from jsonschema.cli import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/bin/natsort b/appWSM/bin/natsort new file mode 100755 index 0000000000000000000000000000000000000000..234d09334a285f93fb4416f4707376a9e9050c79 --- /dev/null +++ b/appWSM/bin/natsort @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from natsort.__main__ import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/bin/pip b/appWSM/bin/pip new file mode 100755 index 0000000000000000000000000000000000000000..de3aafb41e8e925e20e3c1a1bb5243434289e77a --- /dev/null +++ b/appWSM/bin/pip @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/bin/pip2 b/appWSM/bin/pip2 new file mode 100755 index 0000000000000000000000000000000000000000..de3aafb41e8e925e20e3c1a1bb5243434289e77a --- /dev/null +++ b/appWSM/bin/pip2 @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/bin/pip2.7 b/appWSM/bin/pip2.7 new file mode 100755 index 0000000000000000000000000000000000000000..de3aafb41e8e925e20e3c1a1bb5243434289e77a --- /dev/null +++ b/appWSM/bin/pip2.7 @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from pip import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/bin/python b/appWSM/bin/python new file mode 120000 index 0000000000000000000000000000000000000000..551ab2685850339ef0f79468bc2c3b836e4efed4 --- /dev/null +++ b/appWSM/bin/python @@ -0,0 +1 @@ +python2 \ No newline at end of file diff --git a/appWSM/bin/python-config b/appWSM/bin/python-config new file mode 100755 index 0000000000000000000000000000000000000000..85995fc0867fec94f1cec88793b7bfd2fc7d9239 --- /dev/null +++ b/appWSM/bin/python-config @@ -0,0 +1,78 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python + +import sys +import getopt +import sysconfig + +valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', + 'ldflags', 'help'] + +if sys.version_info >= (3, 2): + valid_opts.insert(-1, 'extension-suffix') + valid_opts.append('abiflags') +if sys.version_info >= (3, 3): + valid_opts.append('configdir') + + +def exit_with_usage(code=1): + sys.stderr.write("Usage: {0} [{1}]\n".format( + sys.argv[0], '|'.join('--'+opt for opt in valid_opts))) + sys.exit(code) + +try: + opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) +except getopt.error: + exit_with_usage() + +if not opts: + exit_with_usage() + +pyver = sysconfig.get_config_var('VERSION') +getvar = sysconfig.get_config_var + +opt_flags = [flag for (flag, val) in opts] + +if '--help' in opt_flags: + exit_with_usage(code=0) + +for opt in opt_flags: + if opt == '--prefix': + print(sysconfig.get_config_var('prefix')) + + elif opt == '--exec-prefix': + print(sysconfig.get_config_var('exec_prefix')) + + elif opt in ('--includes', '--cflags'): + flags = ['-I' + sysconfig.get_path('include'), + '-I' + sysconfig.get_path('platinclude')] + if opt == '--cflags': + flags.extend(getvar('CFLAGS').split()) + print(' '.join(flags)) + + elif opt in ('--libs', '--ldflags'): + abiflags = getattr(sys, 'abiflags', '') + libs = ['-lpython' + pyver + abiflags] + libs += getvar('LIBS').split() + libs += getvar('SYSLIBS').split() + # add the prefix/lib/pythonX.Y/config dir, but only if there is no + # shared library in prefix/lib/. + if opt == '--ldflags': + if not getvar('Py_ENABLE_SHARED'): + libs.insert(0, '-L' + getvar('LIBPL')) + if not getvar('PYTHONFRAMEWORK'): + libs.extend(getvar('LINKFORSHARED').split()) + print(' '.join(libs)) + + elif opt == '--extension-suffix': + ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') + if ext_suffix is None: + ext_suffix = sysconfig.get_config_var('SO') + print(ext_suffix) + + elif opt == '--abiflags': + if not getattr(sys, 'abiflags', None): + exit_with_usage() + print(sys.abiflags) + + elif opt == '--configdir': + print(sysconfig.get_config_var('LIBPL')) diff --git a/appWSM/bin/python2.7 b/appWSM/bin/python2.7 new file mode 120000 index 0000000000000000000000000000000000000000..551ab2685850339ef0f79468bc2c3b836e4efed4 --- /dev/null +++ b/appWSM/bin/python2.7 @@ -0,0 +1 @@ +python2 \ No newline at end of file diff --git a/appWSM/bin/python2.REMOVED.git-id b/appWSM/bin/python2.REMOVED.git-id new file mode 100644 index 0000000000000000000000000000000000000000..bdbbaef4e1ed54191728c6c25f7d6a05a38269ea --- /dev/null +++ b/appWSM/bin/python2.REMOVED.git-id @@ -0,0 +1 @@ +f5a2f183060152b8b23ab1a590fb65a1c1f36807 \ No newline at end of file diff --git a/appWSM/bin/wheel b/appWSM/bin/wheel new file mode 100755 index 0000000000000000000000000000000000000000..f87c734531aba34dd419f2073d42f5ea047b7ff7 --- /dev/null +++ b/appWSM/bin/wheel @@ -0,0 +1,11 @@ +#!/home/duque004/git/WSM/rest/appWSM/bin/python2 + +# -*- coding: utf-8 -*- +import re +import sys + +from wheel.tool import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/appWSM/include/python2.7 b/appWSM/include/python2.7 new file mode 120000 index 0000000000000000000000000000000000000000..ad4ca80ba8a5452789afcb63a5311a4dc71e1e91 --- /dev/null +++ b/appWSM/include/python2.7 @@ -0,0 +1 @@ +/usr/include/python2.7 \ No newline at end of file diff --git a/appWSM/lib/python2.7/UserDict.py b/appWSM/lib/python2.7/UserDict.py new file mode 120000 index 0000000000000000000000000000000000000000..1dcde33cfb6b546cd7d4448f1002bef9a768fc49 --- /dev/null +++ b/appWSM/lib/python2.7/UserDict.py @@ -0,0 +1 @@ +/usr/lib/python2.7/UserDict.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/_abcoll.py b/appWSM/lib/python2.7/_abcoll.py new file mode 120000 index 0000000000000000000000000000000000000000..e39c38d2a2caa98b165addf0b829e03890ac3418 --- /dev/null +++ b/appWSM/lib/python2.7/_abcoll.py @@ -0,0 +1 @@ +/usr/lib/python2.7/_abcoll.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/_weakrefset.py b/appWSM/lib/python2.7/_weakrefset.py new file mode 120000 index 0000000000000000000000000000000000000000..a3c1cd4f0308a971d2edb361cfad8f02f51bdd1b --- /dev/null +++ b/appWSM/lib/python2.7/_weakrefset.py @@ -0,0 +1 @@ +/usr/lib/python2.7/_weakrefset.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/abc.py b/appWSM/lib/python2.7/abc.py new file mode 120000 index 0000000000000000000000000000000000000000..cb3e5d16f005c7de2a57dc5115f64a4c0bef40c0 --- /dev/null +++ b/appWSM/lib/python2.7/abc.py @@ -0,0 +1 @@ +/usr/lib/python2.7/abc.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/codecs.py b/appWSM/lib/python2.7/codecs.py new file mode 120000 index 0000000000000000000000000000000000000000..50169dc7a1b768a449e9a0b76502553692e39b6e --- /dev/null +++ b/appWSM/lib/python2.7/codecs.py @@ -0,0 +1 @@ +/usr/lib/python2.7/codecs.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/copy_reg.py b/appWSM/lib/python2.7/copy_reg.py new file mode 120000 index 0000000000000000000000000000000000000000..5dc0af34233a0a92cc300f4fcfbbf4491c0bbfaa --- /dev/null +++ b/appWSM/lib/python2.7/copy_reg.py @@ -0,0 +1 @@ +/usr/lib/python2.7/copy_reg.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/distutils/__init__.py b/appWSM/lib/python2.7/distutils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..29fc1da45900ece22ff3ebb73a6b7ccf607e6a1a --- /dev/null +++ b/appWSM/lib/python2.7/distutils/__init__.py @@ -0,0 +1,101 @@ +import os +import sys +import warnings +import imp +import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib + # Important! To work on pypy, this must be a module that resides in the + # lib-python/modified-x.y.z directory + +dirname = os.path.dirname + +distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils') +if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)): + warnings.warn( + "The virtualenv distutils package at %s appears to be in the same location as the system distutils?") +else: + __path__.insert(0, distutils_path) + real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY)) + # Copy the relevant attributes + try: + __revision__ = real_distutils.__revision__ + except AttributeError: + pass + __version__ = real_distutils.__version__ + +from distutils import dist, sysconfig + +try: + basestring +except NameError: + basestring = str + +## patch build_ext (distutils doesn't know how to get the libs directory +## path on windows - it hardcodes the paths around the patched sys.prefix) + +if sys.platform == 'win32': + from distutils.command.build_ext import build_ext as old_build_ext + class build_ext(old_build_ext): + def finalize_options (self): + if self.library_dirs is None: + self.library_dirs = [] + elif isinstance(self.library_dirs, basestring): + self.library_dirs = self.library_dirs.split(os.pathsep) + + self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs")) + old_build_ext.finalize_options(self) + + from distutils.command import build_ext as build_ext_module + build_ext_module.build_ext = build_ext + +## distutils.dist patches: + +old_find_config_files = dist.Distribution.find_config_files +def find_config_files(self): + found = old_find_config_files(self) + system_distutils = os.path.join(distutils_path, 'distutils.cfg') + #if os.path.exists(system_distutils): + # found.insert(0, system_distutils) + # What to call the per-user config file + if os.name == 'posix': + user_filename = ".pydistutils.cfg" + else: + user_filename = "pydistutils.cfg" + user_filename = os.path.join(sys.prefix, user_filename) + if os.path.isfile(user_filename): + for item in list(found): + if item.endswith('pydistutils.cfg'): + found.remove(item) + found.append(user_filename) + return found +dist.Distribution.find_config_files = find_config_files + +## distutils.sysconfig patches: + +old_get_python_inc = sysconfig.get_python_inc +def sysconfig_get_python_inc(plat_specific=0, prefix=None): + if prefix is None: + prefix = sys.real_prefix + return old_get_python_inc(plat_specific, prefix) +sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__ +sysconfig.get_python_inc = sysconfig_get_python_inc + +old_get_python_lib = sysconfig.get_python_lib +def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None): + if standard_lib and prefix is None: + prefix = sys.real_prefix + return old_get_python_lib(plat_specific, standard_lib, prefix) +sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__ +sysconfig.get_python_lib = sysconfig_get_python_lib + +old_get_config_vars = sysconfig.get_config_vars +def sysconfig_get_config_vars(*args): + real_vars = old_get_config_vars(*args) + if sys.platform == 'win32': + lib_dir = os.path.join(sys.real_prefix, "libs") + if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars: + real_vars['LIBDIR'] = lib_dir # asked for all + elif isinstance(real_vars, list) and 'LIBDIR' in args: + real_vars = real_vars + [lib_dir] # asked for list + return real_vars +sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__ +sysconfig.get_config_vars = sysconfig_get_config_vars diff --git a/appWSM/lib/python2.7/distutils/distutils.cfg b/appWSM/lib/python2.7/distutils/distutils.cfg new file mode 100644 index 0000000000000000000000000000000000000000..1af230ec911a5d31aa8c4bed50bff2e8e1af8512 --- /dev/null +++ b/appWSM/lib/python2.7/distutils/distutils.cfg @@ -0,0 +1,6 @@ +# This is a config file local to this virtualenv installation +# You may include options that will be used by all distutils commands, +# and by easy_install. For instance: +# +# [easy_install] +# find_links = http://mylocalsite diff --git a/appWSM/lib/python2.7/encodings b/appWSM/lib/python2.7/encodings new file mode 120000 index 0000000000000000000000000000000000000000..1250ad86942eda944b487321d781e2982c736d96 --- /dev/null +++ b/appWSM/lib/python2.7/encodings @@ -0,0 +1 @@ +/usr/lib/python2.7/encodings \ No newline at end of file diff --git a/appWSM/lib/python2.7/fnmatch.py b/appWSM/lib/python2.7/fnmatch.py new file mode 120000 index 0000000000000000000000000000000000000000..ec3e10cf3c52f10f222ea3e8375c78e9b511a28c --- /dev/null +++ b/appWSM/lib/python2.7/fnmatch.py @@ -0,0 +1 @@ +/usr/lib/python2.7/fnmatch.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/genericpath.py b/appWSM/lib/python2.7/genericpath.py new file mode 120000 index 0000000000000000000000000000000000000000..cb8897ce534b1cfaec604f27cc5683a6fedca8f2 --- /dev/null +++ b/appWSM/lib/python2.7/genericpath.py @@ -0,0 +1 @@ +/usr/lib/python2.7/genericpath.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/lib-dynload b/appWSM/lib/python2.7/lib-dynload new file mode 120000 index 0000000000000000000000000000000000000000..c706a1eba8f5edd8d797b9b924e8f53ce5ec4e53 --- /dev/null +++ b/appWSM/lib/python2.7/lib-dynload @@ -0,0 +1 @@ +/usr/lib/python2.7/lib-dynload \ No newline at end of file diff --git a/appWSM/lib/python2.7/linecache.py b/appWSM/lib/python2.7/linecache.py new file mode 120000 index 0000000000000000000000000000000000000000..943c42973d642f74be8754102ad3189fa3af7fbe --- /dev/null +++ b/appWSM/lib/python2.7/linecache.py @@ -0,0 +1 @@ +/usr/lib/python2.7/linecache.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/locale.py b/appWSM/lib/python2.7/locale.py new file mode 120000 index 0000000000000000000000000000000000000000..92c243c66b062accc050860c5d692b4db2e346c3 --- /dev/null +++ b/appWSM/lib/python2.7/locale.py @@ -0,0 +1 @@ +/usr/lib/python2.7/locale.py \ No newline at end of file diff --git a/rest/common/__init__.py b/appWSM/lib/python2.7/no-global-site-packages.txt similarity index 100% rename from rest/common/__init__.py rename to appWSM/lib/python2.7/no-global-site-packages.txt diff --git a/appWSM/lib/python2.7/ntpath.py b/appWSM/lib/python2.7/ntpath.py new file mode 120000 index 0000000000000000000000000000000000000000..5659ae14c878a13d2c05125540300a974ee55d3e --- /dev/null +++ b/appWSM/lib/python2.7/ntpath.py @@ -0,0 +1 @@ +/usr/lib/python2.7/ntpath.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/orig-prefix.txt b/appWSM/lib/python2.7/orig-prefix.txt new file mode 100644 index 0000000000000000000000000000000000000000..e25db584b91486de5db5f56a271923324202d338 --- /dev/null +++ b/appWSM/lib/python2.7/orig-prefix.txt @@ -0,0 +1 @@ +/usr \ No newline at end of file diff --git a/appWSM/lib/python2.7/os.py b/appWSM/lib/python2.7/os.py new file mode 120000 index 0000000000000000000000000000000000000000..950fc8d2a9afc154ec7c7720beeaaf01710b9657 --- /dev/null +++ b/appWSM/lib/python2.7/os.py @@ -0,0 +1 @@ +/usr/lib/python2.7/os.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/posixpath.py b/appWSM/lib/python2.7/posixpath.py new file mode 120000 index 0000000000000000000000000000000000000000..30cb8ca50540104bb30855fa3ce6ed8976c53cd8 --- /dev/null +++ b/appWSM/lib/python2.7/posixpath.py @@ -0,0 +1 @@ +/usr/lib/python2.7/posixpath.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/re.py b/appWSM/lib/python2.7/re.py new file mode 120000 index 0000000000000000000000000000000000000000..56a07316480b83ccbe6e1644b5a5314bad51bf52 --- /dev/null +++ b/appWSM/lib/python2.7/re.py @@ -0,0 +1 @@ +/usr/lib/python2.7/re.py \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/DESCRIPTION.rst b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000000000000000000000000000000000000..239dbda32fd24c51fe4aa9a1f6e1c764fd3318de --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/DESCRIPTION.rst @@ -0,0 +1,46 @@ +Flask +----- + +Flask is a microframework for Python based on Werkzeug, Jinja 2 and good +intentions. And before you ask: It's BSD licensed! + +Flask is Fun +```````````` + +Save in a hello.py: + +.. code:: python + + from flask import Flask + app = Flask(__name__) + + @app.route("/") + def hello(): + return "Hello World!" + + if __name__ == "__main__": + app.run() + +And Easy to Setup +````````````````` + +And run it: + +.. code:: bash + + $ pip install Flask + $ python hello.py + * Running on http://localhost:5000/ + + Ready for production? `Read this first `. + +Links +````` + +* `website `_ +* `documentation `_ +* `development version + `_ + + + diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/INSTALLER b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/LICENSE.txt b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..a7da10e176ad16dd53b4ebc4782c346a43de03c1 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/LICENSE.txt @@ -0,0 +1,33 @@ +Copyright (c) 2015 by Armin Ronacher and contributors. See AUTHORS +for more details. + +Some rights reserved. + +Redistribution and use in source and binary forms of the software as well +as documentation, with or without modification, are permitted provided +that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +* The names of the contributors may not be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/METADATA b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..8c43205bb04440d05eebca9ccb785a3ca8163cf4 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/METADATA @@ -0,0 +1,75 @@ +Metadata-Version: 2.0 +Name: Flask +Version: 0.12.2 +Summary: A microframework based on Werkzeug, Jinja2 and good intentions +Home-page: http://github.com/pallets/flask/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +License: BSD +Platform: any +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Dist: Jinja2 (>=2.4) +Requires-Dist: Werkzeug (>=0.7) +Requires-Dist: click (>=2.0) +Requires-Dist: itsdangerous (>=0.21) + +Flask +----- + +Flask is a microframework for Python based on Werkzeug, Jinja 2 and good +intentions. And before you ask: It's BSD licensed! + +Flask is Fun +```````````` + +Save in a hello.py: + +.. code:: python + + from flask import Flask + app = Flask(__name__) + + @app.route("/") + def hello(): + return "Hello World!" + + if __name__ == "__main__": + app.run() + +And Easy to Setup +````````````````` + +And run it: + +.. code:: bash + + $ pip install Flask + $ python hello.py + * Running on http://localhost:5000/ + + Ready for production? `Read this first `. + +Links +````` + +* `website `_ +* `documentation `_ +* `development version + `_ + + + diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/RECORD b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..5b161e0b37758c4b1874fc458fe3310e2f9fab2d --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/RECORD @@ -0,0 +1,52 @@ +Flask-0.12.2.dist-info/DESCRIPTION.rst,sha256=DmJm8IBlBjl3wkm0Ly23jYvWbvK_mCuE5oUseYCijbI,810 +Flask-0.12.2.dist-info/LICENSE.txt,sha256=hLgKluMRHSnxG-L0EmrqjmKgG5cHlff6pIh3rCNINeI,1582 +Flask-0.12.2.dist-info/METADATA,sha256=OgSkJQ_kmrz4qEkS-OzYtL75uZmXAThymkOcGR4kXRQ,1948 +Flask-0.12.2.dist-info/RECORD,, +Flask-0.12.2.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +Flask-0.12.2.dist-info/entry_points.txt,sha256=jzk2Wy2h30uEcqqzd4CVnlzsMXB-vaD5GXjuPMXmTmI,60 +Flask-0.12.2.dist-info/metadata.json,sha256=By8kZ1vY9lLEAGnRiWNBhudqKvLPo0HkZVXTYECyPKk,1389 +Flask-0.12.2.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 +flask/__init__.py,sha256=sHdK1v6WRbVmCN0fEv990EE7rOT2UlamQkSof2d0Dt0,1673 +flask/__main__.py,sha256=cldbNi5zpjE68XzIWI8uYHNWwBHHVJmwtlXWk6P4CO4,291 +flask/_compat.py,sha256=VlfjUuLjufsTHJIjr_ZsnnOesSbAXIslBBgRe5tfOok,2802 +flask/app.py,sha256=6DPjtb5jUJWgL5fXksG5boA49EB3l-k9pWyftitbNNk,83169 +flask/blueprints.py,sha256=6HVasMcPcaq7tk36kCrgX4bnhTkky4G5WIWCyyJL8HY,16872 +flask/cli.py,sha256=2NXEdCOu5-4ymklxX4Lf6bjb-89I4VHYeP6xScR3i8E,18328 +flask/config.py,sha256=Ym5Jenyu6zAZ1fdVLeKekY9-EsKmq8183qnRgauwCMY,9905 +flask/ctx.py,sha256=UPA0YwoIlHP0txOGanC9lQLSGv6eCqV5Fmw2cVJRmgQ,14739 +flask/debughelpers.py,sha256=z-uQavKIymOZl0WQDLXsnacA00ERIlCx3S3Tnb_OYsE,6024 +flask/exthook.py,sha256=SvXs5jwpcOjogwJ7SNquiWTxowoN1-MHFoqAejWnk2o,5762 +flask/globals.py,sha256=I3m_4RssLhWW1R11zuEI8oFryHUHX3NQwjMkGXOZzg8,1645 +flask/helpers.py,sha256=KrsQ2Yo3lOVHvBTgQCLvpubgmTOpQdTTyiCOOYlwDuQ,38452 +flask/json.py,sha256=1zPM-NPLiWoOfGd0P14FxnEkeKtjtUZxMC9pyYyDBYI,9183 +flask/logging.py,sha256=UG-77jPkRClk9w1B-_ArjjXPuj9AmZz9mG0IRGvptW0,2751 +flask/sessions.py,sha256=QBKXVYKJ-HKbx9m6Yb5yan_EPq84a5yevVLgAzNKFQY,14394 +flask/signals.py,sha256=MfZk5qTRj_R_O3aGYlTEnx2g3SvlZncz8Ii73eKK59g,2209 +flask/templating.py,sha256=u7FbN6j56H_q6CrdJJyJ6gZtqaMa0vh1_GP12gEHRQQ,4912 +flask/testing.py,sha256=II8EO_NjOT1LvL8Hh_SdIFL_BdlwVPcB9yot5pbltxE,5630 +flask/views.py,sha256=6OPv7gwu3h14JhqpeeMRWwrxoGHsUr4_nOGSyTRAxAI,5630 +flask/wrappers.py,sha256=1S_5mmuA1Tlx7D9lXV6xMblrg-PdAauNWahe-henMEE,7612 +flask/ext/__init__.py,sha256=UEezCApsG4ZJWqwUnX9YmWcNN4OVENgph_9L05n0eOM,842 +../../../bin/flask,sha256=igyyGNreXbanNekbFaDgSmwyfzE1HijApcTG8QD9OG0,242 +Flask-0.12.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +flask/config.pyc,, +flask/testing.pyc,, +flask/wrappers.pyc,, +flask/views.pyc,, +flask/logging.pyc,, +flask/json.pyc,, +flask/helpers.pyc,, +flask/__main__.pyc,, +flask/blueprints.pyc,, +flask/signals.pyc,, +flask/__init__.pyc,, +flask/exthook.pyc,, +flask/debughelpers.pyc,, +flask/templating.pyc,, +flask/ctx.pyc,, +flask/cli.pyc,, +flask/_compat.pyc,, +flask/app.pyc,, +flask/globals.pyc,, +flask/ext/__init__.pyc,, +flask/sessions.pyc,, diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/WHEEL b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..8b6dd1b5a884bfc07b5f771ab5dc56ed02323531 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/entry_points.txt b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/entry_points.txt new file mode 100644 index 0000000000000000000000000000000000000000..14adf18abf5fc0693202a0200e835cef9a828814 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/entry_points.txt @@ -0,0 +1,4 @@ + + [console_scripts] + flask=flask.cli:main + \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/metadata.json b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..4d814b8b3f472cf79ea323f0fdf0392968ae3ebc --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules"], "extensions": {"python.commands": {"wrap_console": {"flask": "flask.cli:main"}}, "python.details": {"contacts": [{"email": "armin.ronacher@active-4.com", "name": "Armin Ronacher", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "http://github.com/pallets/flask/"}}, "python.exports": {"console_scripts": {"flask": "flask.cli:main"}}}, "extras": [], "generator": "bdist_wheel (0.29.0)", "license": "BSD", "metadata_version": "2.0", "name": "Flask", "platform": "any", "run_requires": [{"requires": ["Jinja2 (>=2.4)", "Werkzeug (>=0.7)", "click (>=2.0)", "itsdangerous (>=0.21)"]}], "summary": "A microframework based on Werkzeug, Jinja2 and good intentions", "version": "0.12.2"} \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/top_level.txt b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..7e1060246fd6746a14204539a72e199a25469a05 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask-0.12.2.dist-info/top_level.txt @@ -0,0 +1 @@ +flask diff --git a/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/DESCRIPTION.rst b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000000000000000000000000000000000000..e1187231a3553e6c1bec45c6b5a4e4e62b8ef70d --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/DESCRIPTION.rst @@ -0,0 +1,3 @@ +UNKNOWN + + diff --git a/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/INSTALLER b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/METADATA b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..529c46e133fd2f387da3ab92e06a9d20e12da300 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/METADATA @@ -0,0 +1,31 @@ +Metadata-Version: 2.0 +Name: Flask-RESTful +Version: 0.3.6 +Summary: Simple framework for creating REST APIs +Home-page: https://www.github.com/flask-restful/flask-restful/ +Author: Twilio API Team +Author-email: help@twilio.com +License: BSD +Platform: any +Classifier: Framework :: Flask +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: License :: OSI Approved :: BSD License +Requires-Dist: Flask (>=0.8) +Requires-Dist: aniso8601 (>=0.82) +Requires-Dist: pytz +Requires-Dist: six (>=1.3.0) +Provides-Extra: docs +Requires-Dist: sphinx; extra == 'docs' +Provides-Extra: paging +Requires-Dist: pycrypto (>=2.6); extra == 'paging' + +UNKNOWN + + diff --git a/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/RECORD b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..1a17400f896a4c2aeada9e00e9009ebd6184ce40 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/RECORD @@ -0,0 +1,29 @@ +Flask_RESTful-0.3.6.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10 +Flask_RESTful-0.3.6.dist-info/METADATA,sha256=THyvrIu4SUuC9fqpfDBP-m6kdZcesFu2-Gm2oxgJnWM,985 +Flask_RESTful-0.3.6.dist-info/RECORD,, +Flask_RESTful-0.3.6.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +Flask_RESTful-0.3.6.dist-info/metadata.json,sha256=1zKAyvYdpplkpX_NJU8vKCZ9nvy0Y_paxRiMJXCNiXU,1178 +Flask_RESTful-0.3.6.dist-info/top_level.txt,sha256=lNpWPlejgBAtMhCUwz_FTyJH12ul1mBZ-Uv3ZK1HiGg,14 +flask_restful/__init__.py,sha256=dpZuahv5GMo2Rof4OWkGpQvIhnJIeOakL_1EHkkzUA4,28510 +flask_restful/__version__.py,sha256=-RHjzBqfdsudCsVzQ9u-AoX7n-_90gcO1RlvPEVk7d4,45 +flask_restful/fields.py,sha256=9cbc0vXaGzt1Ur8gUf3sHlMjNSy1qOSV_qvi-3YQAL8,13051 +flask_restful/inputs.py,sha256=AOBF_1BpB8snY3XJT_vca_uWYzkCP2nla01lFU7xqLE,9114 +flask_restful/paging.py,sha256=H_nL-UlViLSHJhS7NbHJurHMwzxv7IsaAnuTC4L5Kec,1207 +flask_restful/reqparse.py,sha256=I9qxtSqjVzrDTxQtfSHM4yGx3XsiVoa-wMPlA1mod9s,13475 +flask_restful/representations/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +flask_restful/representations/json.py,sha256=swKwnbt7v2ioHfHkqhqbzIu_yrcP0ComlSl49IGFJOo,873 +flask_restful/utils/__init__.py,sha256=Qh5pyCIT2dfHmrUdS6lsMbBLjZmAhz1fl7vWyJ_n4XQ,719 +flask_restful/utils/cors.py,sha256=cZiqaHhIn0w66spRoSIdC-jIn4X_b6OlVms5eGF4Ess,2084 +flask_restful/utils/crypto.py,sha256=q3PBvAYMJYybbqqQlKNF_Pqeyo9h3x5jFJuVqtEA5bA,996 +Flask_RESTful-0.3.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +flask_restful/utils/crypto.pyc,, +flask_restful/inputs.pyc,, +flask_restful/utils/__init__.pyc,, +flask_restful/utils/cors.pyc,, +flask_restful/__init__.pyc,, +flask_restful/paging.pyc,, +flask_restful/__version__.pyc,, +flask_restful/representations/json.pyc,, +flask_restful/reqparse.pyc,, +flask_restful/representations/__init__.pyc,, +flask_restful/fields.pyc,, diff --git a/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/WHEEL b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..8b6dd1b5a884bfc07b5f771ab5dc56ed02323531 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/metadata.json b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..fd1720a509662192b16ace5078906c49385d77fc --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Framework :: Flask", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "License :: OSI Approved :: BSD License"], "extensions": {"python.details": {"contacts": [{"email": "help@twilio.com", "name": "Twilio API Team", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://www.github.com/flask-restful/flask-restful/"}}}, "extras": ["docs", "paging"], "generator": "bdist_wheel (0.29.0)", "license": "BSD", "metadata_version": "2.0", "name": "Flask-RESTful", "platform": "any", "run_requires": [{"requires": ["Flask (>=0.8)", "aniso8601 (>=0.82)", "pytz", "six (>=1.3.0)"]}, {"extra": "paging", "requires": ["pycrypto (>=2.6)"]}, {"extra": "docs", "requires": ["sphinx"]}], "summary": "Simple framework for creating REST APIs", "test_requires": [{"requires": ["Flask-RESTful[paging]", "blinker", "mock (>=0.8)"]}], "version": "0.3.6"} \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/top_level.txt b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..f7b852702bd62e41e8251c3194d8e191569bb625 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Flask_RESTful-0.3.6.dist-info/top_level.txt @@ -0,0 +1 @@ +flask_restful diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000000000000000000000000000000000000..1594da5ce5fd98bdb9a05462f6f7252e28c74644 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst @@ -0,0 +1,37 @@ + +Jinja2 +~~~~~~ + +Jinja2 is a template engine written in pure Python. It provides a +`Django`_ inspired non-XML syntax but supports inline expressions and +an optional `sandboxed`_ environment. + +Nutshell +-------- + +Here a small example of a Jinja template:: + + {% extends 'base.html' %} + {% block title %}Memberlist{% endblock %} + {% block content %} + + {% endblock %} + +Philosophy +---------- + +Application logic is for the controller but don't try to make the life +for the template designer too hard by giving him too few functionality. + +For more informations visit the new `Jinja2 webpage`_ and `documentation`_. + +.. _sandboxed: https://en.wikipedia.org/wiki/Sandbox_(computer_security) +.. _Django: https://www.djangoproject.com/ +.. _Jinja2 webpage: http://jinja.pocoo.org/ +.. _documentation: http://jinja.pocoo.org/2/documentation/ + + diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/INSTALLER b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/LICENSE.txt b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..10145a264342b7888ec6accfedc4f2808fb67a0e --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/LICENSE.txt @@ -0,0 +1,31 @@ +Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details. + +Some rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * The names of the contributors may not be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/METADATA b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..40f2b46b40668ac2e7641811be66cd1f7f533939 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/METADATA @@ -0,0 +1,68 @@ +Metadata-Version: 2.0 +Name: Jinja2 +Version: 2.10 +Summary: A small but fast and easy to use stand-alone template engine written in pure python. +Home-page: http://jinja.pocoo.org/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +License: BSD +Description-Content-Type: UNKNOWN +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup :: HTML +Requires-Dist: MarkupSafe (>=0.23) +Provides-Extra: i18n +Requires-Dist: Babel (>=0.8); extra == 'i18n' + + +Jinja2 +~~~~~~ + +Jinja2 is a template engine written in pure Python. It provides a +`Django`_ inspired non-XML syntax but supports inline expressions and +an optional `sandboxed`_ environment. + +Nutshell +-------- + +Here a small example of a Jinja template:: + + {% extends 'base.html' %} + {% block title %}Memberlist{% endblock %} + {% block content %} + + {% endblock %} + +Philosophy +---------- + +Application logic is for the controller but don't try to make the life +for the template designer too hard by giving him too few functionality. + +For more informations visit the new `Jinja2 webpage`_ and `documentation`_. + +.. _sandboxed: https://en.wikipedia.org/wiki/Sandbox_(computer_security) +.. _Django: https://www.djangoproject.com/ +.. _Jinja2 webpage: http://jinja.pocoo.org/ +.. _documentation: http://jinja.pocoo.org/2/documentation/ + + diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/RECORD b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..5634a3df9c6e8038cca5ae6426fb27954b5038ed --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/RECORD @@ -0,0 +1,61 @@ +Jinja2-2.10.dist-info/DESCRIPTION.rst,sha256=b5ckFDoM7vVtz_mAsJD4OPteFKCqE7beu353g4COoYI,978 +Jinja2-2.10.dist-info/LICENSE.txt,sha256=JvzUNv3Io51EiWrAPm8d_SXjhJnEjyDYvB3Tvwqqils,1554 +Jinja2-2.10.dist-info/METADATA,sha256=18EgU8zR6-av-0-5y_gXebzK4GnBB_76lALUsl-6QHM,2258 +Jinja2-2.10.dist-info/RECORD,, +Jinja2-2.10.dist-info/WHEEL,sha256=kdsN-5OJAZIiHN-iO4Rhl82KyS0bDWf4uBwMbkNafr8,110 +Jinja2-2.10.dist-info/entry_points.txt,sha256=NdzVcOrqyNyKDxD09aERj__3bFx2paZhizFDsKmVhiA,72 +Jinja2-2.10.dist-info/metadata.json,sha256=NPUJ9TMBxVQAv_kTJzvU8HwmP-4XZvbK9mz6_4YUVl4,1473 +Jinja2-2.10.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 +jinja2/__init__.py,sha256=xJHjaMoy51_KXn1wf0cysH6tUUifUxZCwSOfcJGEYZw,2614 +jinja2/_compat.py,sha256=xP60CE5Qr8FTYcDE1f54tbZLKGvMwYml4-8T7Q4KG9k,2596 +jinja2/_identifier.py,sha256=W1QBSY-iJsyt6oR_nKSuNNCzV95vLIOYgUNPUI1d5gU,1726 +jinja2/asyncfilters.py,sha256=cTDPvrS8Hp_IkwsZ1m9af_lr5nHysw7uTa5gV0NmZVE,4144 +jinja2/asyncsupport.py,sha256=UErQ3YlTLaSjFb94P4MVn08-aVD9jJxty2JVfMRb-1M,7878 +jinja2/bccache.py,sha256=nQldx0ZRYANMyfvOihRoYFKSlUdd5vJkS7BjxNwlOZM,12794 +jinja2/compiler.py,sha256=BqC5U6JxObSRhblyT_a6Tp5GtEU5z3US1a4jLQaxxgo,65386 +jinja2/constants.py,sha256=uwwV8ZUhHhacAuz5PTwckfsbqBaqM7aKfyJL7kGX5YQ,1626 +jinja2/debug.py,sha256=WTVeUFGUa4v6ReCsYv-iVPa3pkNB75OinJt3PfxNdXs,12045 +jinja2/defaults.py,sha256=Em-95hmsJxIenDCZFB1YSvf9CNhe9rBmytN3yUrBcWA,1400 +jinja2/environment.py,sha256=VnkAkqw8JbjZct4tAyHlpBrka2vqB-Z58RAP-32P1ZY,50849 +jinja2/exceptions.py,sha256=_Rj-NVi98Q6AiEjYQOsP8dEIdu5AlmRHzcSNOPdWix4,4428 +jinja2/ext.py,sha256=atMQydEC86tN1zUsdQiHw5L5cF62nDbqGue25Yiu3N4,24500 +jinja2/filters.py,sha256=yOAJk0MsH-_gEC0i0U6NweVQhbtYaC-uE8xswHFLF4w,36528 +jinja2/idtracking.py,sha256=2GbDSzIvGArEBGLkovLkqEfmYxmWsEf8c3QZwM4uNsw,9197 +jinja2/lexer.py,sha256=ySEPoXd1g7wRjsuw23uimS6nkGN5aqrYwcOKxCaVMBQ,28559 +jinja2/loaders.py,sha256=xiTuURKAEObyym0nU8PCIXu_Qp8fn0AJ5oIADUUm-5Q,17382 +jinja2/meta.py,sha256=fmKHxkmZYAOm9QyWWy8EMd6eefAIh234rkBMW2X4ZR8,4340 +jinja2/nativetypes.py,sha256=_sJhS8f-8Q0QMIC0dm1YEdLyxEyoO-kch8qOL5xUDfE,7308 +jinja2/nodes.py,sha256=L10L_nQDfubLhO3XjpF9qz46FSh2clL-3e49ogVlMmA,30853 +jinja2/optimizer.py,sha256=MsdlFACJ0FRdPtjmCAdt7JQ9SGrXFaDNUaslsWQaG3M,1722 +jinja2/parser.py,sha256=lPzTEbcpTRBLw8ii6OYyExHeAhaZLMA05Hpv4ll3ULk,35875 +jinja2/runtime.py,sha256=DHdD38Pq8gj7uWQC5usJyWFoNWL317A9AvXOW_CLB34,27755 +jinja2/sandbox.py,sha256=TVyZHlNqqTzsv9fv2NvJNmSdWRHTguhyMHdxjWms32U,16708 +jinja2/tests.py,sha256=iJQLwbapZr-EKquTG_fVOVdwHUUKf3SX9eNkjQDF8oU,4237 +jinja2/utils.py,sha256=q24VupGZotQ-uOyrJxCaXtDWhZC1RgsQG7kcdmjck2Q,20629 +jinja2/visitor.py,sha256=JD1H1cANA29JcntFfN5fPyqQxB4bI4wC00BzZa-XHks,3316 +Jinja2-2.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +jinja2/_compat.pyc,, +jinja2/sandbox.pyc,, +jinja2/environment.pyc,, +jinja2/ext.pyc,, +jinja2/runtime.pyc,, +jinja2/utils.pyc,, +jinja2/parser.pyc,, +jinja2/debug.pyc,, +jinja2/lexer.pyc,, +jinja2/defaults.pyc,, +jinja2/visitor.pyc,, +jinja2/bccache.pyc,, +jinja2/_identifier.pyc,, +jinja2/nodes.pyc,, +jinja2/compiler.pyc,, +jinja2/nativetypes.pyc,, +jinja2/exceptions.pyc,, +jinja2/__init__.pyc,, +jinja2/loaders.pyc,, +jinja2/optimizer.pyc,, +jinja2/filters.pyc,, +jinja2/tests.pyc,, +jinja2/meta.pyc,, +jinja2/idtracking.pyc,, +jinja2/constants.pyc,, diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/WHEEL b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..7332a419cda6903b61439f3bac93492b0747e6e7 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.30.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/entry_points.txt b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/entry_points.txt new file mode 100644 index 0000000000000000000000000000000000000000..32e6b7530284307358fa869cf232318221f791fd --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/entry_points.txt @@ -0,0 +1,4 @@ + + [babel.extractors] + jinja2 = jinja2.ext:babel_extract[i18n] + \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/metadata.json b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..7f5dc3879d9320ee95e12f257f83222dd331a304 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup :: HTML"], "description_content_type": "UNKNOWN", "extensions": {"python.details": {"contacts": [{"email": "armin.ronacher@active-4.com", "name": "Armin Ronacher", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "http://jinja.pocoo.org/"}}, "python.exports": {"babel.extractors": {"jinja2": "jinja2.ext:babel_extract [i18n]"}}}, "extras": ["i18n"], "generator": "bdist_wheel (0.30.0)", "license": "BSD", "metadata_version": "2.0", "name": "Jinja2", "run_requires": [{"extra": "i18n", "requires": ["Babel (>=0.8)"]}, {"requires": ["MarkupSafe (>=0.23)"]}], "summary": "A small but fast and easy to use stand-alone template engine written in pure python.", "version": "2.10"} \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/top_level.txt b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..7f7afbf3bf54b346092be6a72070fcbd305ead1e --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Jinja2-2.10.dist-info/top_level.txt @@ -0,0 +1 @@ +jinja2 diff --git a/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/DESCRIPTION.rst b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000000000000000000000000000000000000..495211bd12dec44dde597e310bf546c6cc26595f --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/DESCRIPTION.rst @@ -0,0 +1,115 @@ +MarkupSafe +========== + +Implements a unicode subclass that supports HTML strings: + +.. code-block:: python + + >>> from markupsafe import Markup, escape + >>> escape("") + Markup(u'<script>alert(document.cookie);</script>') + >>> tmpl = Markup("%s") + >>> tmpl % "Peter > Lustig" + Markup(u'Peter > Lustig') + +If you want to make an object unicode that is not yet unicode +but don't want to lose the taint information, you can use the +``soft_unicode`` function. (On Python 3 you can also use ``soft_str`` which +is a different name for the same function). + +.. code-block:: python + + >>> from markupsafe import soft_unicode + >>> soft_unicode(42) + u'42' + >>> soft_unicode(Markup('foo')) + Markup(u'foo') + +HTML Representations +-------------------- + +Objects can customize their HTML markup equivalent by overriding +the ``__html__`` function: + +.. code-block:: python + + >>> class Foo(object): + ... def __html__(self): + ... return 'Nice' + ... + >>> escape(Foo()) + Markup(u'Nice') + >>> Markup(Foo()) + Markup(u'Nice') + +Silent Escapes +-------------- + +Since MarkupSafe 0.10 there is now also a separate escape function +called ``escape_silent`` that returns an empty string for ``None`` for +consistency with other systems that return empty strings for ``None`` +when escaping (for instance Pylons' webhelpers). + +If you also want to use this for the escape method of the Markup +object, you can create your own subclass that does that: + +.. code-block:: python + + from markupsafe import Markup, escape_silent as escape + + class SilentMarkup(Markup): + __slots__ = () + + @classmethod + def escape(cls, s): + return cls(escape(s)) + +New-Style String Formatting +--------------------------- + +Starting with MarkupSafe 0.21 new style string formats from Python 2.6 and +3.x are now fully supported. Previously the escape behavior of those +functions was spotty at best. The new implementations operates under the +following algorithm: + +1. if an object has an ``__html_format__`` method it is called as + replacement for ``__format__`` with the format specifier. It either + has to return a string or markup object. +2. if an object has an ``__html__`` method it is called. +3. otherwise the default format system of Python kicks in and the result + is HTML escaped. + +Here is how you can implement your own formatting: + +.. code-block:: python + + class User(object): + + def __init__(self, id, username): + self.id = id + self.username = username + + def __html_format__(self, format_spec): + if format_spec == 'link': + return Markup('{1}').format( + self.id, + self.__html__(), + ) + elif format_spec: + raise ValueError('Invalid format spec') + return self.__html__() + + def __html__(self): + return Markup('{0}').format(self.username) + +And to format that user: + +.. code-block:: python + + >>> user = User(1, 'foo') + >>> Markup('

User: {0:link}').format(user) + Markup(u'

User: foo') + +Markupsafe supports Python 2.6, 2.7 and Python 3.3 and higher. + + diff --git a/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/INSTALLER b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/LICENSE.txt b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..5d2693890dddc34129973f5613afd88767213b24 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/LICENSE.txt @@ -0,0 +1,33 @@ +Copyright (c) 2010 by Armin Ronacher and contributors. See AUTHORS +for more details. + +Some rights reserved. + +Redistribution and use in source and binary forms of the software as well +as documentation, with or without modification, are permitted provided +that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +* The names of the contributors may not be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/METADATA b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..52e50fd66e6f0b59a9ea289b72af0861df9a55dd --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/METADATA @@ -0,0 +1,136 @@ +Metadata-Version: 2.0 +Name: MarkupSafe +Version: 1.0 +Summary: Implements a XML/HTML/XHTML Markup safe string for Python +Home-page: http://github.com/pallets/markupsafe +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +License: BSD +Description-Content-Type: UNKNOWN +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup :: HTML + +MarkupSafe +========== + +Implements a unicode subclass that supports HTML strings: + +.. code-block:: python + + >>> from markupsafe import Markup, escape + >>> escape("") + Markup(u'<script>alert(document.cookie);</script>') + >>> tmpl = Markup("%s") + >>> tmpl % "Peter > Lustig" + Markup(u'Peter > Lustig') + +If you want to make an object unicode that is not yet unicode +but don't want to lose the taint information, you can use the +``soft_unicode`` function. (On Python 3 you can also use ``soft_str`` which +is a different name for the same function). + +.. code-block:: python + + >>> from markupsafe import soft_unicode + >>> soft_unicode(42) + u'42' + >>> soft_unicode(Markup('foo')) + Markup(u'foo') + +HTML Representations +-------------------- + +Objects can customize their HTML markup equivalent by overriding +the ``__html__`` function: + +.. code-block:: python + + >>> class Foo(object): + ... def __html__(self): + ... return 'Nice' + ... + >>> escape(Foo()) + Markup(u'Nice') + >>> Markup(Foo()) + Markup(u'Nice') + +Silent Escapes +-------------- + +Since MarkupSafe 0.10 there is now also a separate escape function +called ``escape_silent`` that returns an empty string for ``None`` for +consistency with other systems that return empty strings for ``None`` +when escaping (for instance Pylons' webhelpers). + +If you also want to use this for the escape method of the Markup +object, you can create your own subclass that does that: + +.. code-block:: python + + from markupsafe import Markup, escape_silent as escape + + class SilentMarkup(Markup): + __slots__ = () + + @classmethod + def escape(cls, s): + return cls(escape(s)) + +New-Style String Formatting +--------------------------- + +Starting with MarkupSafe 0.21 new style string formats from Python 2.6 and +3.x are now fully supported. Previously the escape behavior of those +functions was spotty at best. The new implementations operates under the +following algorithm: + +1. if an object has an ``__html_format__`` method it is called as + replacement for ``__format__`` with the format specifier. It either + has to return a string or markup object. +2. if an object has an ``__html__`` method it is called. +3. otherwise the default format system of Python kicks in and the result + is HTML escaped. + +Here is how you can implement your own formatting: + +.. code-block:: python + + class User(object): + + def __init__(self, id, username): + self.id = id + self.username = username + + def __html_format__(self, format_spec): + if format_spec == 'link': + return Markup('{1}').format( + self.id, + self.__html__(), + ) + elif format_spec: + raise ValueError('Invalid format spec') + return self.__html__() + + def __html__(self): + return Markup('{0}').format(self.username) + +And to format that user: + +.. code-block:: python + + >>> user = User(1, 'foo') + >>> Markup('

User: {0:link}').format(user) + Markup(u'

User: foo') + +Markupsafe supports Python 2.6, 2.7 and Python 3.3 and higher. + + diff --git a/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/RECORD b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..73cfb5382beeac4ad444934cffa23d7fdfbe99e9 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/RECORD @@ -0,0 +1,18 @@ +MarkupSafe-1.0.dist-info/DESCRIPTION.rst,sha256=3B3J0YLzzmJQVaWQ_XlVMhGeHA_DvBqysABvul_5fko,3397 +MarkupSafe-1.0.dist-info/LICENSE.txt,sha256=C76IIo_WPSDsCX9k5Y1aCkZRI64TkUChjUBsYLSIJLU,1582 +MarkupSafe-1.0.dist-info/METADATA,sha256=OaqNJuUium8313pk7v9-1zJSn_q881dXm0NbnrwibIs,4216 +MarkupSafe-1.0.dist-info/RECORD,, +MarkupSafe-1.0.dist-info/WHEEL,sha256=SbDL06p73vwui0yN_WleK4ikNZmZXkWtuZM0WWDCUhU,105 +MarkupSafe-1.0.dist-info/metadata.json,sha256=G6pFEVAWSjETqEGYgPlkcKKk6ZSpi6MGtPhoZccUZFw,963 +MarkupSafe-1.0.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +markupsafe/__init__.py,sha256=xtkRdxhzJzgp65wUo1D4DjnazxHU88pPldaAuDekBeY,10697 +markupsafe/_compat.py,sha256=r1HE0CpcAZeb-AiTV9wITR91PeLHn0CzZ_XHkYoozpI,565 +markupsafe/_constants.py,sha256=U_xybFQsyXKCgHSfranJnFzo-z9nn9fuBeSk243sE5Q,4795 +markupsafe/_native.py,sha256=E2Un1ysOf-w45d18YCj8UelT5UP7Vt__IuFPYJ7YRIs,1187 +markupsafe/_speedups.c,sha256=B6Mf6Fn33WqkagfwY7q5ZBSm_vJoHDYxDB0Jp_DP7Jw,5936 +markupsafe/_speedups.so,sha256=tOKAsdZDAlIzVa5Vj3BoOLuE7r6oAcJ1EY1_TOjFeFw,28304 +MarkupSafe-1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +markupsafe/_native.pyc,, +markupsafe/_constants.pyc,, +markupsafe/_compat.pyc,, +markupsafe/__init__.pyc,, diff --git a/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/WHEEL b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..93970e3ce12f71d5a36139bd22f78bc08c92d192 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.30.0) +Root-Is-Purelib: false +Tag: cp27-cp27mu-linux_x86_64 + diff --git a/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/metadata.json b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..cbd7a5078ba7963e2bbd75d13c5cbd3f2ecd7d80 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup :: HTML"], "description_content_type": "UNKNOWN", "extensions": {"python.details": {"contacts": [{"email": "armin.ronacher@active-4.com", "name": "Armin Ronacher", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "http://github.com/pallets/markupsafe"}}}, "generator": "bdist_wheel (0.30.0)", "license": "BSD", "metadata_version": "2.0", "name": "MarkupSafe", "summary": "Implements a XML/HTML/XHTML Markup safe string for Python", "version": "1.0"} \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/top_level.txt b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..75bf729258f9daef77370b6df1a57940f90fc23f --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/DESCRIPTION.rst b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000000000000000000000000000000000000..3e3abb7f29879ba545af836883f5aa8a4745c7c2 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/DESCRIPTION.rst @@ -0,0 +1,54 @@ +Werkzeug +======== + +Werkzeug started as simple collection of various utilities for WSGI +applications and has become one of the most advanced WSGI utility +modules. It includes a powerful debugger, full featured request and +response objects, HTTP utilities to handle entity tags, cache control +headers, HTTP dates, cookie handling, file uploads, a powerful URL +routing system and a bunch of community contributed addon modules. + +Werkzeug is unicode aware and doesn't enforce a specific template +engine, database adapter or anything else. It doesn't even enforce +a specific way of handling requests and leaves all that up to the +developer. It's most useful for end user applications which should work +on as many server environments as possible (such as blogs, wikis, +bulletin boards, etc.). + +Details and example applications are available on the +`Werkzeug website `_. + + +Features +-------- + +- unicode awareness + +- request and response objects + +- various utility functions for dealing with HTTP headers such as + `Accept` and `Cache-Control` headers. + +- thread local objects with proper cleanup at request end + +- an interactive debugger + +- A simple WSGI server with support for threading and forking + with an automatic reloader. + +- a flexible URL routing system with REST support. + +- fully WSGI compatible + + +Development Version +------------------- + +The Werkzeug development version can be installed by cloning the git +repository from `github`_:: + + git clone git@github.com:pallets/werkzeug.git + +.. _github: http://github.com/pallets/werkzeug + + diff --git a/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/INSTALLER b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/LICENSE.txt b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..1c2e0b7dc6db835268a10f6e7e34733786b6e986 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/LICENSE.txt @@ -0,0 +1,29 @@ +Copyright (c) 2014 by the Werkzeug Team, see AUTHORS for more details. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * The names of the contributors may not be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/METADATA b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..52e12a4f0db2cb2a2494206f3244e84329614281 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/METADATA @@ -0,0 +1,83 @@ +Metadata-Version: 2.0 +Name: Werkzeug +Version: 0.12.2 +Summary: The Swiss Army knife of Python web development +Home-page: http://werkzeug.pocoo.org/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +License: BSD +Platform: any +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Provides-Extra: termcolor +Requires-Dist: termcolor; extra == 'termcolor' +Provides-Extra: watchdog +Requires-Dist: watchdog; extra == 'watchdog' + +Werkzeug +======== + +Werkzeug started as simple collection of various utilities for WSGI +applications and has become one of the most advanced WSGI utility +modules. It includes a powerful debugger, full featured request and +response objects, HTTP utilities to handle entity tags, cache control +headers, HTTP dates, cookie handling, file uploads, a powerful URL +routing system and a bunch of community contributed addon modules. + +Werkzeug is unicode aware and doesn't enforce a specific template +engine, database adapter or anything else. It doesn't even enforce +a specific way of handling requests and leaves all that up to the +developer. It's most useful for end user applications which should work +on as many server environments as possible (such as blogs, wikis, +bulletin boards, etc.). + +Details and example applications are available on the +`Werkzeug website `_. + + +Features +-------- + +- unicode awareness + +- request and response objects + +- various utility functions for dealing with HTTP headers such as + `Accept` and `Cache-Control` headers. + +- thread local objects with proper cleanup at request end + +- an interactive debugger + +- A simple WSGI server with support for threading and forking + with an automatic reloader. + +- a flexible URL routing system with REST support. + +- fully WSGI compatible + + +Development Version +------------------- + +The Werkzeug development version can be installed by cloning the git +repository from `github`_:: + + git clone git@github.com:pallets/werkzeug.git + +.. _github: http://github.com/pallets/werkzeug + + diff --git a/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/RECORD b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..12866689901f7944b7e73877855fbbfbdfb073d8 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/RECORD @@ -0,0 +1,95 @@ +werkzeug/posixemulation.py,sha256=xEF2Bxc-vUCPkiu4IbfWVd3LW7DROYAT-ExW6THqyzw,3519 +werkzeug/security.py,sha256=Z0v0ojdo7T4FNyfIjx86BFQKwasy3ZR9euikIJDQYP8,9191 +werkzeug/__init__.py,sha256=NDY8HsYsT3dguTLu4MhuH-GpQE5XS9aKhrdfwHnzOEk,6864 +werkzeug/testapp.py,sha256=3HQRW1sHZKXuAjCvFMet4KXtQG3loYTFnvn6LWt-4zI,9396 +werkzeug/http.py,sha256=nrk-ASJzcKOuoBEz274TWA8jKt0CQSOBZuP_A0UASTA,36658 +werkzeug/routing.py,sha256=g25wg0GNfff8WcfRlc1ZxTGvz1KbVj09w2S7wxopseQ,66746 +werkzeug/utils.py,sha256=lkybtv_mq35zV1qhelvEcILTzrMUwZ9yon6E8XwapJE,22972 +werkzeug/exceptions.py,sha256=3wp95Hqj9FqV8MdikV99JRcHse_fSMn27V8tgP5Hw2c,20505 +werkzeug/_reloader.py,sha256=NkIXQCTa6b22wWLpXob_jIVUxux8LtAsfWehLkKt0iM,8816 +werkzeug/formparser.py,sha256=DxN53eOCb6i7PxqtldrF2Kv9Mx00BqW297N4t-RxkWE,21241 +werkzeug/_compat.py,sha256=8c4U9o6A_TR9nKCcTbpZNxpqCXcXDVIbFawwKM2s92c,6311 +werkzeug/datastructures.py,sha256=rq0zICISMUetS3xvUVvrhIvyue9oUzrs_NU3b83zwuQ,89066 +werkzeug/wrappers.py,sha256=wceh1RhvhIZVzKuok3XMQ5jqjYYCEYv5JqKY3Nc_oRY,82986 +werkzeug/test.py,sha256=xnabNSpty66ftZiXHcoZaYFP1E4WUNxydw5Oe8Mjhoo,34795 +werkzeug/urls.py,sha256=fSbI4Gb29_p02Zk21VAZQRN1QdOVY9CNTgpb2rbajNQ,36710 +werkzeug/script.py,sha256=Jh9OAktqjLNc_IBBUatVM7uP5LDcbxaYA8n2ObnS4bo,11666 +werkzeug/useragents.py,sha256=Ck3G977Y0Rzdk9wFcLpL0PyOrONtdK1_d2Zexb78cX4,5640 +werkzeug/local.py,sha256=QdQhWV5L8p1Y1CJ1CDStwxaUs24SuN5aebHwjVD08C8,14553 +werkzeug/serving.py,sha256=aAS3EgiD-VjemsYfSf1yqdjaGEfpB4I3M4PKlLotJLo,29069 +werkzeug/filesystem.py,sha256=hHWeWo_gqLMzTRfYt8-7n2wWcWUNTnDyudQDLOBEICE,2175 +werkzeug/wsgi.py,sha256=TjPo5ups3NI1RVVGdMvd3XaceqFtqlMX5X169gWWFrQ,42838 +werkzeug/_internal.py,sha256=sE2JbLnMzN9mRI1iipTYWrFAGEWaZVECqtHAiNEhqUE,13841 +werkzeug/contrib/fixers.py,sha256=gR06T-w71ur-tHQ_31kP_4jpOncPJ4Wc1dOqTvYusr8,10179 +werkzeug/contrib/limiter.py,sha256=iS8-ahPZ-JLRnmfIBzxpm7O_s3lPsiDMVWv7llAIDCI,1334 +werkzeug/contrib/__init__.py,sha256=f7PfttZhbrImqpr5Ezre8CXgwvcGUJK7zWNpO34WWrw,623 +werkzeug/contrib/testtools.py,sha256=G9xN-qeihJlhExrIZMCahvQOIDxdL9NiX874jiiHFMs,2453 +werkzeug/contrib/iterio.py,sha256=RlqDvGhz0RneTpzE8dVc-yWCUv4nkPl1jEc_EDp2fH0,10814 +werkzeug/contrib/cache.py,sha256=nyUUxsS0MTHiFmu-481y9PHd8NvWH5pzCoEX1yA0mHY,30341 +werkzeug/contrib/securecookie.py,sha256=bDsAJmslkwmXjycnPjEjWtfLBvhz0ud4z3k7tdezUVs,12174 +werkzeug/contrib/lint.py,sha256=qZlmqiWJ5tQJOEzLnPmHWA8eUEpcBIWkAb_V2RKJg4o,12558 +werkzeug/contrib/profiler.py,sha256=ISwCWvwVyGpDLRBRpLjo_qUWma6GXYBrTAco4PEQSHY,5151 +werkzeug/contrib/wrappers.py,sha256=v7OYlz7wQtDlS9fey75UiRZ1IkUWqCpzbhsLy4k14Hw,10398 +werkzeug/contrib/atom.py,sha256=qqfJcfIn2RYY-3hO3Oz0aLq9YuNubcPQ_KZcNsDwVJo,15575 +werkzeug/contrib/jsrouting.py,sha256=QTmgeDoKXvNK02KzXgx9lr3cAH6fAzpwF5bBdPNvJPs,8564 +werkzeug/contrib/sessions.py,sha256=39LVNvLbm5JWpbxM79WC2l87MJFbqeISARjwYbkJatw,12577 +werkzeug/debug/console.py,sha256=n3-dsKk1TsjnN-u4ZgmuWCU_HO0qw5IA7ttjhyyMM6I,5607 +werkzeug/debug/repr.py,sha256=bKqstDYGfECpeLerd48s_hxuqK4b6UWnjMu3d_DHO8I,9340 +werkzeug/debug/__init__.py,sha256=GTsOsjE3PqUAlsUVm2Mgc_KWA2kjjSsUz0JsM7Qu41w,17266 +werkzeug/debug/tbtools.py,sha256=rBudXCmkVdAKIcdhxANxgf09g6kQjJWW9_5bjSpr4OY,18451 +werkzeug/debug/shared/less.png,sha256=-4-kNRaXJSONVLahrQKUxMwXGm9R4OnZ9SxDGpHlIR4,191 +werkzeug/debug/shared/source.png,sha256=RoGcBTE4CyCB85GBuDGTFlAnUqxwTBiIfDqW15EpnUQ,818 +werkzeug/debug/shared/debugger.js,sha256=PKPVYuyO4SX1hkqLOwCLvmIEO5154WatFYaXE-zIfKI,6264 +werkzeug/debug/shared/style.css,sha256=IEO0PC2pWmh2aEyGCaN--txuWsRCliuhlbEhPDFwh0A,6270 +werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507 +werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673 +werkzeug/debug/shared/jquery.js,sha256=7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2_ujj7g,95957 +werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220 +werkzeug/debug/shared/more.png,sha256=GngN7CioHQoV58rH6ojnkYi8c_qED2Aka5FO5UXrReY,200 +Werkzeug-0.12.2.dist-info/DESCRIPTION.rst,sha256=z9r9xqJ0fYSAn1Tz7KRBdFGDerL2y4pHWSW_72pUgTc,1591 +Werkzeug-0.12.2.dist-info/metadata.json,sha256=6taKobd3cQ5zOY5MVKlvuCJGaX7VPLaHYuRwzwwkORI,1276 +Werkzeug-0.12.2.dist-info/RECORD,, +Werkzeug-0.12.2.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 +Werkzeug-0.12.2.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110 +Werkzeug-0.12.2.dist-info/LICENSE.txt,sha256=F84h8-PZAuC-Hq-_252D3yhH6mqIc-WUbXUPbfOtjXM,1532 +Werkzeug-0.12.2.dist-info/METADATA,sha256=SphYykCCskmOJK7mV1-M2T1PTOrx5K3DJ8n3E5jA298,2738 +Werkzeug-0.12.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +werkzeug/_reloader.pyc,, +werkzeug/filesystem.pyc,, +werkzeug/contrib/testtools.pyc,, +werkzeug/formparser.pyc,, +werkzeug/_compat.pyc,, +werkzeug/posixemulation.pyc,, +werkzeug/wsgi.pyc,, +werkzeug/serving.pyc,, +werkzeug/contrib/__init__.pyc,, +werkzeug/contrib/iterio.pyc,, +werkzeug/test.pyc,, +werkzeug/__init__.pyc,, +werkzeug/contrib/limiter.pyc,, +werkzeug/debug/tbtools.pyc,, +werkzeug/contrib/sessions.pyc,, +werkzeug/local.pyc,, +werkzeug/utils.pyc,, +werkzeug/_internal.pyc,, +werkzeug/security.pyc,, +werkzeug/contrib/cache.pyc,, +werkzeug/contrib/securecookie.pyc,, +werkzeug/script.pyc,, +werkzeug/routing.pyc,, +werkzeug/wrappers.pyc,, +werkzeug/contrib/jsrouting.pyc,, +werkzeug/contrib/fixers.pyc,, +werkzeug/contrib/profiler.pyc,, +werkzeug/debug/console.pyc,, +werkzeug/debug/__init__.pyc,, +werkzeug/datastructures.pyc,, +werkzeug/http.pyc,, +werkzeug/urls.pyc,, +werkzeug/contrib/lint.pyc,, +werkzeug/contrib/wrappers.pyc,, +werkzeug/exceptions.pyc,, +werkzeug/contrib/atom.pyc,, +werkzeug/testapp.pyc,, +werkzeug/useragents.pyc,, +werkzeug/debug/repr.pyc,, diff --git a/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/WHEEL b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..9dff69d86102d36169ccf42a9e71885d3dc17155 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.24.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/metadata.json b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..d77fbb8dd486083b6e234075d8fa53c434327142 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/metadata.json @@ -0,0 +1 @@ +{"license": "BSD", "name": "Werkzeug", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "summary": "The Swiss Army knife of Python web development", "platform": "any", "run_requires": [{"requires": ["watchdog"], "extra": "watchdog"}, {"requires": ["termcolor"], "extra": "termcolor"}], "version": "0.12.2", "extensions": {"python.details": {"project_urls": {"Home": "http://werkzeug.pocoo.org/"}, "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "contacts": [{"role": "author", "email": "armin.ronacher@active-4.com", "name": "Armin Ronacher"}]}}, "classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules"], "extras": ["termcolor", "watchdog"]} \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/top_level.txt b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..6fe8da8499399d7c0484847967ad49e4b165589b --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/Werkzeug-0.12.2.dist-info/top_level.txt @@ -0,0 +1 @@ +werkzeug diff --git a/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/DESCRIPTION.rst b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000000000000000000000000000000000000..c3b6813247ff1d99ac1eba14efe21d0ab3330a1a --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/DESCRIPTION.rst @@ -0,0 +1,331 @@ +=========== + aniso8601 +=========== + +---------------------------------- +Another ISO 8601 parser for Python +---------------------------------- + +Features +======== +* Pure Python implementation +* Python 3 support +* Logical behavior + + - Parse a time, get a `datetime.time `_ + - Parse a date, get a `datetime.date `_ + - Parse a datetime, get a `datetime.datetime `_ + - Parse a duration, get a `datetime.timedelta `_ + - Parse an interval, get a tuple of dates or datetimes + - Parse a repeating interval, get a date or datetime `generator `_ + +* UTC offset represented as fixed-offset tzinfo +* `dateutil.relativedelta `_ available for calendar accuracy +* No regular expressions + +Installation +============ + +The recommended installation method is to use pip:: + + $ pip install aniso8601 + +Alternatively, you can download the source (git repository hosted at `Bitbucket `_) and install directly:: + + $ python setup.py install + +Use +=== + +Parsing datetimes +----------------- + +To parse a typical ISO 8601 datetime string:: + + >>> import aniso8601 + >>> aniso8601.parse_datetime('1977-06-10T12:00:00Z') + datetime.datetime(1977, 6, 10, 12, 0, tzinfo=+0:00:00 UTC) + +Alternative delimiters can be specified, for example, a space:: + + >>> aniso8601.parse_datetime('1977-06-10 12:00:00Z', delimiter=' ') + datetime.datetime(1977, 6, 10, 12, 0, tzinfo=+0:00:00 UTC) + +UTC offsets are supported:: + + >>> aniso8601.parse_datetime('1979-06-05T08:00:00-08:00') + datetime.datetime(1979, 6, 5, 8, 0, tzinfo=-8:00:00 UTC) + +If a UTC offset is not specified, the returned datetime will be naive:: + + >>> aniso8601.parse_datetime('1983-01-22T08:00:00') + datetime.datetime(1983, 1, 22, 8, 0) + +Parsing dates +------------- + +To parse a date represented in an ISO 8601 string:: + + >>> import aniso8601 + >>> aniso8601.parse_date('1984-04-23') + datetime.date(1984, 4, 23) + +Basic format is supported as well:: + + >>> aniso8601.parse_date('19840423') + datetime.date(1984, 4, 23) + +To parse a date using the ISO 8601 week date format:: + + >>> aniso8601.parse_date('1986-W38-1') + datetime.date(1986, 9, 15) + +To parse an ISO 8601 ordinal date:: + + >>> aniso8601.parse_date('1988-132') + datetime.date(1988, 5, 11) + +Parsing times +------------- + +To parse a time formatted as an ISO 8601 string:: + + >>> import aniso8601 + >>> aniso8601.parse_time('11:31:14') + datetime.time(11, 31, 14) + +As with all of the above, basic format is supported:: + + >>> aniso8601.parse_time('113114') + datetime.time(11, 31, 14) + +A UTC offset can be specified for times:: + + >>> aniso8601.parse_time('17:18:19-02:30') + datetime.time(17, 18, 19, tzinfo=-2:30:00 UTC) + >>> aniso8601.parse_time('171819Z') + datetime.time(17, 18, 19, tzinfo=+0:00:00 UTC) + +Reduced accuracy is supported:: + + >>> aniso8601.parse_time('21:42') + datetime.time(21, 42) + >>> aniso8601.parse_time('22') + datetime.time(22, 0) + +A decimal fraction is always allowed on the lowest order element of an ISO 8601 formatted time:: + + >>> aniso8601.parse_time('22:33.5') + datetime.time(22, 33, 30) + >>> aniso8601.parse_time('23.75') + datetime.time(23, 45) + +Leap seconds are currently not supported:: + + >>> aniso8601.parse_time('21:42:60') + Traceback (most recent call last): + File "", line 1, in + File "aniso8601/time.py", line 107, in parse_time + return _parse_time_naive(timestr) + File "aniso8601/time.py", line 136, in _parse_time_naive + return _resolution_map[get_time_resolution(timestr)](timestr) + File "aniso8601/time.py", line 199, in _parse_second_time + raise ValueError('Seconds must be less than 60.') + ValueError: Seconds must be less than 60. + +Parsing durations +----------------- + +To parse a duration formatted as an ISO 8601 string:: + + >>> import aniso8601 + >>> aniso8601.parse_duration('P1Y2M3DT4H54M6S') + datetime.timedelta(428, 17646) + +Reduced accuracy is supported:: + + >>> aniso8601.parse_duration('P1Y') + datetime.timedelta(365) + +A decimal fraction is allowed on the lowest order element:: + + >>> aniso8601.parse_duration('P1YT3.5M') + datetime.timedelta(365, 210) + +The decimal fraction can be specified with a comma instead of a full-stop:: + + >>> aniso8601.parse_duration('P1YT3,5M') + datetime.timedelta(365, 210) + +Parsing a duration from a combined date and time is supported as well:: + + >>> aniso8601.parse_duration('P0001-01-02T01:30:5') + datetime.timedelta(397, 5405) + +The above treat years as 365 days and months as 30 days. If calendar level accuracy is required, the relative keyword argument can be used:: + + >>> import aniso8601 + >>> from datetime import date + >>> one_month = aniso8601.parse_duration('P1M', relative=True) + >>> print one_month + relativedelta(months=+1) + >>> date(2003,1,27) + one_month + datetime.date(2003, 2, 27) + >>> date(2003,1,31) + one_month + datetime.date(2003, 2, 28) + >>> date(2003,1,31) + two_months + datetime.date(2003, 3, 31) + +Since a relative fractional month or year is not logical, a ValueError is raised when attempting to parse a duration with :code:`relative=True` and fractional month or year:: + + >>> aniso8601.parse_duration('P2.1Y', relative=True) + Traceback (most recent call last): + File "", line 1, in + File "aniso8601/duration.py", line 29, in parse_duration + return _parse_duration_prescribed(isodurationstr, relative) + File "aniso8601/duration.py", line 150, in _parse_duration_prescribed + raise ValueError('Fractional months and years are not defined for relative intervals.') + ValueError: Fractional months and years are not defined for relative intervals. + +Parsing intervals +----------------- + +To parse an interval specified by a start and end:: + + >>> import aniso8601 + >>> aniso8601.parse_interval('2007-03-01T13:00:00/2008-05-11T15:30:00') + (datetime.datetime(2007, 3, 1, 13, 0), datetime.datetime(2008, 5, 11, 15, 30)) + +Intervals specified by a start time and a duration are supported:: + + >>> aniso8601.parse_interval('2007-03-01T13:00:00Z/P1Y2M10DT2H30M') + (datetime.datetime(2007, 3, 1, 13, 0, tzinfo=+0:00:00 UTC), datetime.datetime(2008, 5, 9, 15, 30, tzinfo=+0:00:00 UTC)) + +A duration can also be specified by a duration and end time:: + + >>> aniso8601.parse_interval('P1M/1981-04-05') + (datetime.date(1981, 4, 5), datetime.date(1981, 3, 6)) + +Notice that the result of the above parse is not in order from earliest to latest. If sorted intervals are required, simply use the 'sorted' keyword as shown below:: + + >>> sorted(aniso8601.parse_interval('P1M/1981-04-05')) + [datetime.date(1981, 3, 6), datetime.date(1981, 4, 5)] + +The end of an interval is given as a datetime when required to maintain the resolution specified by a duration, even if the duration start is given as a date:: + + >>> aniso8601.parse_interval('2014-11-12/PT4H54M6.5S') + (datetime.date(2014, 11, 12), datetime.datetime(2014, 11, 12, 4, 54, 6, 500000)) + +Repeating intervals are supported as well, and return a generator:: + + >>> aniso8601.parse_repeating_interval('R3/1981-04-05/P1D') + + >>> list(aniso8601.parse_repeating_interval('R3/1981-04-05/P1D')) + [datetime.date(1981, 4, 5), datetime.date(1981, 4, 6), datetime.date(1981, 4, 7)] + +Repeating intervals are allowed to go in the reverse direction:: + + >>> list(aniso8601.parse_repeating_interval('R2/PT1H2M/1980-03-05T01:01:00')) + [datetime.datetime(1980, 3, 5, 1, 1), datetime.datetime(1980, 3, 4, 23, 59)] + +Unbounded intervals are also allowed (Python 2):: + + >>> result = aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00') + >>> result.next() + datetime.datetime(1980, 3, 5, 1, 1) + >>> result.next() + datetime.datetime(1980, 3, 4, 23, 59) + +or for Python 3:: + + >>> result = aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00') + >>> next(result) + datetime.datetime(1980, 3, 5, 1, 1) + >>> next(result) + datetime.datetime(1980, 3, 4, 23, 59) + +Note that you should never try to convert a generator produced by an unbounded interval to a list:: + + >>> list(aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00')) + Traceback (most recent call last): + File "", line 1, in + File "aniso8601/interval.py", line 156, in _date_generator_unbounded + currentdate += timedelta + OverflowError: date value out of range + +The above treat years as 365 days and months as 30 days. If calendar level accuracy is required, the relative keyword argument can be used:: + + >>> aniso8601.parse_interval('2003-01-27/P1M', relative=True) + (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27)) + >>> aniso8601.parse_interval('2003-01-31/P1M', relative=True) + (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28)) + >>> aniso8601.parse_interval('P1Y/2001-02-28', relative=True) + (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28) + +Fractional years and months do not make sense for relative intervals. A ValueError is raised when attempting to parse an interval with :code:`relative=True` and a fractional month or year:: + + >>> aniso8601.parse_interval('P1.1Y/2001-02-28', relative=True) + Traceback (most recent call last): + File "", line 1, in + File "aniso8601/interval.py", line 33, in parse_interval + interval_parts = _parse_interval_parts(isointervalstr, intervaldelimiter, datetimedelimiter, relative) + File "aniso8601/interval.py", line 84, in _parse_interval_parts + duration = parse_duration(firstpart, relative=relative) + File "aniso8601/duration.py", line 29, in parse_duration + return _parse_duration_prescribed(isodurationstr, relative) + File "aniso8601/duration.py", line 150, in _parse_duration_prescribed + raise ValueError('Fractional months and years are not defined for relative intervals.') + ValueError: Fractional months and years are not defined for relative intervals. + +Date and time resolution +------------------------ + +In some situations, it may be useful to figure out the resolution provided by an ISO 8601 date or time string. Two functions are provided for this purpose. + +To get the resolution of a ISO 8601 time string:: + + >>> aniso8601.get_time_resolution('11:31:14') == aniso8601.resolution.TimeResolution.Seconds + True + >>> aniso8601.get_time_resolution('11:31') == aniso8601.resolution.TimeResolution.Minutes + True + >>> aniso8601.get_time_resolution('11') == aniso8601.resolution.TimeResolution.Hours + True + +Similarly, for an ISO 8601 date string:: + + >>> aniso8601.get_date_resolution('1981-04-05') == aniso8601.resolution.DateResolution.Day + True + >>> aniso8601.get_date_resolution('1981-04') == aniso8601.resolution.DateResolution.Month + True + >>> aniso8601.get_date_resolution('1981') == aniso8601.resolution.DateResolution.Year + True + +Tests +===== + +To run the unit tests, navigate to the source directory and run the tests for the python version being worked on (python2, python3):: + + $ python2 -m unittest discover aniso8601/tests/ + +or:: + + $ python3 -m unittest discover aniso8601/tests/ + +Contributing +============ + +aniso8601 is an open source project hosted on `Bitbucket `_. + +Any and all bugs are welcome on our `issue tracker `_. +Of particular interest are valid ISO 8601 strings that don't parse, or invalid ones that do. At a minimum, +bug reports should include an example of the misbehaving string, as well as the expected result. Of course +patches containing unit tests (or fixed bugs) are welcome! + +References +========== + +* `ISO 8601:2004(E) `_ (Caution, PDF link) +* `Wikipedia article on ISO 8601 `_ +* `Discussion on alternative ISO 8601 parsers for Python `_ + + diff --git a/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/INSTALLER b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/METADATA b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..52570d75ee37f832d072a712c1fa31bce2381269 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/METADATA @@ -0,0 +1,350 @@ +Metadata-Version: 2.0 +Name: aniso8601 +Version: 1.3.0 +Summary: A library for parsing ISO 8601 strings. +Home-page: https://bitbucket.org/nielsenb/aniso8601 +Author: Brandon Nielsen +Author-email: nielsenb@jetfuse.net +License: UNKNOWN +Description-Content-Type: UNKNOWN +Platform: UNKNOWN +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 3 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Dist: python-dateutil + +=========== + aniso8601 +=========== + +---------------------------------- +Another ISO 8601 parser for Python +---------------------------------- + +Features +======== +* Pure Python implementation +* Python 3 support +* Logical behavior + + - Parse a time, get a `datetime.time `_ + - Parse a date, get a `datetime.date `_ + - Parse a datetime, get a `datetime.datetime `_ + - Parse a duration, get a `datetime.timedelta `_ + - Parse an interval, get a tuple of dates or datetimes + - Parse a repeating interval, get a date or datetime `generator `_ + +* UTC offset represented as fixed-offset tzinfo +* `dateutil.relativedelta `_ available for calendar accuracy +* No regular expressions + +Installation +============ + +The recommended installation method is to use pip:: + + $ pip install aniso8601 + +Alternatively, you can download the source (git repository hosted at `Bitbucket `_) and install directly:: + + $ python setup.py install + +Use +=== + +Parsing datetimes +----------------- + +To parse a typical ISO 8601 datetime string:: + + >>> import aniso8601 + >>> aniso8601.parse_datetime('1977-06-10T12:00:00Z') + datetime.datetime(1977, 6, 10, 12, 0, tzinfo=+0:00:00 UTC) + +Alternative delimiters can be specified, for example, a space:: + + >>> aniso8601.parse_datetime('1977-06-10 12:00:00Z', delimiter=' ') + datetime.datetime(1977, 6, 10, 12, 0, tzinfo=+0:00:00 UTC) + +UTC offsets are supported:: + + >>> aniso8601.parse_datetime('1979-06-05T08:00:00-08:00') + datetime.datetime(1979, 6, 5, 8, 0, tzinfo=-8:00:00 UTC) + +If a UTC offset is not specified, the returned datetime will be naive:: + + >>> aniso8601.parse_datetime('1983-01-22T08:00:00') + datetime.datetime(1983, 1, 22, 8, 0) + +Parsing dates +------------- + +To parse a date represented in an ISO 8601 string:: + + >>> import aniso8601 + >>> aniso8601.parse_date('1984-04-23') + datetime.date(1984, 4, 23) + +Basic format is supported as well:: + + >>> aniso8601.parse_date('19840423') + datetime.date(1984, 4, 23) + +To parse a date using the ISO 8601 week date format:: + + >>> aniso8601.parse_date('1986-W38-1') + datetime.date(1986, 9, 15) + +To parse an ISO 8601 ordinal date:: + + >>> aniso8601.parse_date('1988-132') + datetime.date(1988, 5, 11) + +Parsing times +------------- + +To parse a time formatted as an ISO 8601 string:: + + >>> import aniso8601 + >>> aniso8601.parse_time('11:31:14') + datetime.time(11, 31, 14) + +As with all of the above, basic format is supported:: + + >>> aniso8601.parse_time('113114') + datetime.time(11, 31, 14) + +A UTC offset can be specified for times:: + + >>> aniso8601.parse_time('17:18:19-02:30') + datetime.time(17, 18, 19, tzinfo=-2:30:00 UTC) + >>> aniso8601.parse_time('171819Z') + datetime.time(17, 18, 19, tzinfo=+0:00:00 UTC) + +Reduced accuracy is supported:: + + >>> aniso8601.parse_time('21:42') + datetime.time(21, 42) + >>> aniso8601.parse_time('22') + datetime.time(22, 0) + +A decimal fraction is always allowed on the lowest order element of an ISO 8601 formatted time:: + + >>> aniso8601.parse_time('22:33.5') + datetime.time(22, 33, 30) + >>> aniso8601.parse_time('23.75') + datetime.time(23, 45) + +Leap seconds are currently not supported:: + + >>> aniso8601.parse_time('21:42:60') + Traceback (most recent call last): + File "", line 1, in + File "aniso8601/time.py", line 107, in parse_time + return _parse_time_naive(timestr) + File "aniso8601/time.py", line 136, in _parse_time_naive + return _resolution_map[get_time_resolution(timestr)](timestr) + File "aniso8601/time.py", line 199, in _parse_second_time + raise ValueError('Seconds must be less than 60.') + ValueError: Seconds must be less than 60. + +Parsing durations +----------------- + +To parse a duration formatted as an ISO 8601 string:: + + >>> import aniso8601 + >>> aniso8601.parse_duration('P1Y2M3DT4H54M6S') + datetime.timedelta(428, 17646) + +Reduced accuracy is supported:: + + >>> aniso8601.parse_duration('P1Y') + datetime.timedelta(365) + +A decimal fraction is allowed on the lowest order element:: + + >>> aniso8601.parse_duration('P1YT3.5M') + datetime.timedelta(365, 210) + +The decimal fraction can be specified with a comma instead of a full-stop:: + + >>> aniso8601.parse_duration('P1YT3,5M') + datetime.timedelta(365, 210) + +Parsing a duration from a combined date and time is supported as well:: + + >>> aniso8601.parse_duration('P0001-01-02T01:30:5') + datetime.timedelta(397, 5405) + +The above treat years as 365 days and months as 30 days. If calendar level accuracy is required, the relative keyword argument can be used:: + + >>> import aniso8601 + >>> from datetime import date + >>> one_month = aniso8601.parse_duration('P1M', relative=True) + >>> print one_month + relativedelta(months=+1) + >>> date(2003,1,27) + one_month + datetime.date(2003, 2, 27) + >>> date(2003,1,31) + one_month + datetime.date(2003, 2, 28) + >>> date(2003,1,31) + two_months + datetime.date(2003, 3, 31) + +Since a relative fractional month or year is not logical, a ValueError is raised when attempting to parse a duration with :code:`relative=True` and fractional month or year:: + + >>> aniso8601.parse_duration('P2.1Y', relative=True) + Traceback (most recent call last): + File "", line 1, in + File "aniso8601/duration.py", line 29, in parse_duration + return _parse_duration_prescribed(isodurationstr, relative) + File "aniso8601/duration.py", line 150, in _parse_duration_prescribed + raise ValueError('Fractional months and years are not defined for relative intervals.') + ValueError: Fractional months and years are not defined for relative intervals. + +Parsing intervals +----------------- + +To parse an interval specified by a start and end:: + + >>> import aniso8601 + >>> aniso8601.parse_interval('2007-03-01T13:00:00/2008-05-11T15:30:00') + (datetime.datetime(2007, 3, 1, 13, 0), datetime.datetime(2008, 5, 11, 15, 30)) + +Intervals specified by a start time and a duration are supported:: + + >>> aniso8601.parse_interval('2007-03-01T13:00:00Z/P1Y2M10DT2H30M') + (datetime.datetime(2007, 3, 1, 13, 0, tzinfo=+0:00:00 UTC), datetime.datetime(2008, 5, 9, 15, 30, tzinfo=+0:00:00 UTC)) + +A duration can also be specified by a duration and end time:: + + >>> aniso8601.parse_interval('P1M/1981-04-05') + (datetime.date(1981, 4, 5), datetime.date(1981, 3, 6)) + +Notice that the result of the above parse is not in order from earliest to latest. If sorted intervals are required, simply use the 'sorted' keyword as shown below:: + + >>> sorted(aniso8601.parse_interval('P1M/1981-04-05')) + [datetime.date(1981, 3, 6), datetime.date(1981, 4, 5)] + +The end of an interval is given as a datetime when required to maintain the resolution specified by a duration, even if the duration start is given as a date:: + + >>> aniso8601.parse_interval('2014-11-12/PT4H54M6.5S') + (datetime.date(2014, 11, 12), datetime.datetime(2014, 11, 12, 4, 54, 6, 500000)) + +Repeating intervals are supported as well, and return a generator:: + + >>> aniso8601.parse_repeating_interval('R3/1981-04-05/P1D') + + >>> list(aniso8601.parse_repeating_interval('R3/1981-04-05/P1D')) + [datetime.date(1981, 4, 5), datetime.date(1981, 4, 6), datetime.date(1981, 4, 7)] + +Repeating intervals are allowed to go in the reverse direction:: + + >>> list(aniso8601.parse_repeating_interval('R2/PT1H2M/1980-03-05T01:01:00')) + [datetime.datetime(1980, 3, 5, 1, 1), datetime.datetime(1980, 3, 4, 23, 59)] + +Unbounded intervals are also allowed (Python 2):: + + >>> result = aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00') + >>> result.next() + datetime.datetime(1980, 3, 5, 1, 1) + >>> result.next() + datetime.datetime(1980, 3, 4, 23, 59) + +or for Python 3:: + + >>> result = aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00') + >>> next(result) + datetime.datetime(1980, 3, 5, 1, 1) + >>> next(result) + datetime.datetime(1980, 3, 4, 23, 59) + +Note that you should never try to convert a generator produced by an unbounded interval to a list:: + + >>> list(aniso8601.parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00')) + Traceback (most recent call last): + File "", line 1, in + File "aniso8601/interval.py", line 156, in _date_generator_unbounded + currentdate += timedelta + OverflowError: date value out of range + +The above treat years as 365 days and months as 30 days. If calendar level accuracy is required, the relative keyword argument can be used:: + + >>> aniso8601.parse_interval('2003-01-27/P1M', relative=True) + (datetime.date(2003, 1, 27), datetime.date(2003, 2, 27)) + >>> aniso8601.parse_interval('2003-01-31/P1M', relative=True) + (datetime.date(2003, 1, 31), datetime.date(2003, 2, 28)) + >>> aniso8601.parse_interval('P1Y/2001-02-28', relative=True) + (datetime.date(2001, 2, 28), datetime.date(2000, 2, 28) + +Fractional years and months do not make sense for relative intervals. A ValueError is raised when attempting to parse an interval with :code:`relative=True` and a fractional month or year:: + + >>> aniso8601.parse_interval('P1.1Y/2001-02-28', relative=True) + Traceback (most recent call last): + File "", line 1, in + File "aniso8601/interval.py", line 33, in parse_interval + interval_parts = _parse_interval_parts(isointervalstr, intervaldelimiter, datetimedelimiter, relative) + File "aniso8601/interval.py", line 84, in _parse_interval_parts + duration = parse_duration(firstpart, relative=relative) + File "aniso8601/duration.py", line 29, in parse_duration + return _parse_duration_prescribed(isodurationstr, relative) + File "aniso8601/duration.py", line 150, in _parse_duration_prescribed + raise ValueError('Fractional months and years are not defined for relative intervals.') + ValueError: Fractional months and years are not defined for relative intervals. + +Date and time resolution +------------------------ + +In some situations, it may be useful to figure out the resolution provided by an ISO 8601 date or time string. Two functions are provided for this purpose. + +To get the resolution of a ISO 8601 time string:: + + >>> aniso8601.get_time_resolution('11:31:14') == aniso8601.resolution.TimeResolution.Seconds + True + >>> aniso8601.get_time_resolution('11:31') == aniso8601.resolution.TimeResolution.Minutes + True + >>> aniso8601.get_time_resolution('11') == aniso8601.resolution.TimeResolution.Hours + True + +Similarly, for an ISO 8601 date string:: + + >>> aniso8601.get_date_resolution('1981-04-05') == aniso8601.resolution.DateResolution.Day + True + >>> aniso8601.get_date_resolution('1981-04') == aniso8601.resolution.DateResolution.Month + True + >>> aniso8601.get_date_resolution('1981') == aniso8601.resolution.DateResolution.Year + True + +Tests +===== + +To run the unit tests, navigate to the source directory and run the tests for the python version being worked on (python2, python3):: + + $ python2 -m unittest discover aniso8601/tests/ + +or:: + + $ python3 -m unittest discover aniso8601/tests/ + +Contributing +============ + +aniso8601 is an open source project hosted on `Bitbucket `_. + +Any and all bugs are welcome on our `issue tracker `_. +Of particular interest are valid ISO 8601 strings that don't parse, or invalid ones that do. At a minimum, +bug reports should include an example of the misbehaving string, as well as the expected result. Of course +patches containing unit tests (or fixed bugs) are welcome! + +References +========== + +* `ISO 8601:2004(E) `_ (Caution, PDF link) +* `Wikipedia article on ISO 8601 `_ +* `Discussion on alternative ISO 8601 parsers for Python `_ + + diff --git a/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/RECORD b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..2c7187b0867bd2b24189e6f49e6caab73384150c --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/RECORD @@ -0,0 +1,23 @@ +aniso8601/__init__.py,sha256=YK7QHGyZIzxe4Lk9M5SUXEfaJ8zin40BHkZUpAkmMZQ,527 +aniso8601/compat.py,sha256=jU6lxdj_8rn4RNDUQPvr6gx_ITNys0kueYc0zksSobM,305 +aniso8601/date.py,sha256=8QpDFWGgm4YoTiXgXss7cBFlcHvEgTpe4ge0jcZMfNE,8562 +aniso8601/duration.py,sha256=HNxmAnVhs8iRlJY69CNxD5wFFDzE91GBBNO7aOJoRpM,9587 +aniso8601/interval.py,sha256=xjPzaVw7g_XZrBFGQcJ16r-8CqOGwAm9w4ktU_9-vJQ,6504 +aniso8601/resolution.py,sha256=Bz21CG3drwJWYim7i_-PB08ijHuCE5RWhoPe6fPPQ5M,422 +aniso8601/time.py,sha256=hVCid4YvmKsqhrfsx_A9nPI-1HEvDNI7sLMCP1v-vcI,7029 +aniso8601/timezone.py,sha256=LtYulQtqjP-8xiIDqxfVv26ovEru9URO0WCFef6ZBUw,4138 +aniso8601-1.3.0.dist-info/DESCRIPTION.rst,sha256=tln-FG-LXmFQRAcPZFHG7KGBZqWLTl84XhU1ecMz7dc,12168 +aniso8601-1.3.0.dist-info/METADATA,sha256=8bSsQdbETmpJMTK6VSB1sq71z9QY18FVzpLtR3S1PhU,12836 +aniso8601-1.3.0.dist-info/RECORD,, +aniso8601-1.3.0.dist-info/WHEEL,sha256=F38j99qfcoNzHo88G-kisXWtI3MVVEd9JWjaAPcHMTc,93 +aniso8601-1.3.0.dist-info/metadata.json,sha256=PzBisshvIXRlsFDq05pOVOU5_rnFrJPhbNBIT7V0YSw,827 +aniso8601-1.3.0.dist-info/top_level.txt,sha256=MVQomyeED8nGIH7PUQdMzxgLppIB48oYHtcmL17ETB0,10 +aniso8601-1.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +aniso8601/__init__.pyc,, +aniso8601/time.pyc,, +aniso8601/duration.pyc,, +aniso8601/interval.pyc,, +aniso8601/timezone.pyc,, +aniso8601/resolution.pyc,, +aniso8601/date.pyc,, +aniso8601/compat.pyc,, diff --git a/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/WHEEL b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..1b492296b11ac941d2d468a3d241bed416ff1794 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.30.0) +Root-Is-Purelib: true +Tag: cp27-none-any + diff --git a/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/metadata.json b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..5c19bb0cf93362f478089ae4111d173b886a415c --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules"], "description_content_type": "UNKNOWN", "extensions": {"python.details": {"contacts": [{"email": "nielsenb@jetfuse.net", "name": "Brandon Nielsen", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://bitbucket.org/nielsenb/aniso8601"}}}, "extras": [], "generator": "bdist_wheel (0.30.0)", "metadata_version": "2.0", "name": "aniso8601", "run_requires": [{"requires": ["python-dateutil"]}], "summary": "A library for parsing ISO 8601 strings.", "version": "1.3.0"} \ No newline at end of file diff --git a/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/top_level.txt b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..166ae78c59960fa87b668c4a8b5c0f7c80329aae --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601-1.3.0.dist-info/top_level.txt @@ -0,0 +1 @@ +aniso8601 diff --git a/appWSM/lib/python2.7/site-packages/aniso8601/__init__.py b/appWSM/lib/python2.7/site-packages/aniso8601/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9f88aef2c86e08328944fd0b748fd2df1e3e4d21 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601/__init__.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2016, Brandon Nielsen +# All rights reserved. +# +# This software may be modified and distributed under the terms +# of the BSD license. See the LICENSE file for details. + +#Import the main parsing functions so they are readily available +from aniso8601.time import parse_datetime, parse_time, get_time_resolution +from aniso8601.date import parse_date, get_date_resolution +from aniso8601.duration import parse_duration +from aniso8601.interval import parse_interval, parse_repeating_interval diff --git a/appWSM/lib/python2.7/site-packages/aniso8601/compat.py b/appWSM/lib/python2.7/site-packages/aniso8601/compat.py new file mode 100644 index 0000000000000000000000000000000000000000..7c6081465cad3868d3063ee72c7b9fea62e438c5 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601/compat.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2016, Brandon Nielsen +# All rights reserved. +# +# This software may be modified and distributed under the terms +# of the BSD license. See the LICENSE file for details. + +import sys + +PY2 = sys.version_info[0] == 2 + +if PY2: + range = xrange +else: + range = range diff --git a/appWSM/lib/python2.7/site-packages/aniso8601/date.py b/appWSM/lib/python2.7/site-packages/aniso8601/date.py new file mode 100644 index 0000000000000000000000000000000000000000..2b9b713b9688f8b83793b9ecfa0403bf5f56dfe8 --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601/date.py @@ -0,0 +1,263 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2016, Brandon Nielsen +# All rights reserved. +# +# This software may be modified and distributed under the terms +# of the BSD license. See the LICENSE file for details. + +import datetime + +from aniso8601.resolution import DateResolution + +def get_date_resolution(isodatestr): + #Valid string formats are: + # + #Y[YYY] + #YYYY-MM-DD + #YYYYMMDD + #YYYY-MM + #YYYY-Www + #YYYYWww + #YYYY-Www-D + #YYYYWwwD + #YYYY-DDD + #YYYYDDD + if isodatestr.startswith('+') or isodatestr.startswith('-'): + raise NotImplementedError('ISO 8601 extended year representation not supported.') + + isodatestrlen = len(isodatestr) + + if isodatestr.find('W') != -1: + #Handle ISO 8601 week date format + hyphens_present = 1 if isodatestr.find('-') != -1 else 0 + week_date_len = 7 + hyphens_present + weekday_date_len = 8 + 2 * hyphens_present + + if isodatestrlen == week_date_len: + #YYYY-Www + #YYYYWww + return DateResolution.Week + elif isodatestrlen == weekday_date_len: + #YYYY-Www-D + #YYYYWwwD + return DateResolution.Weekday + else: + raise ValueError('String is not a valid ISO 8601 week date.') + + #If the size of the string of 4 or less, assume its a truncated year representation + if len(isodatestr) <= 4: + return DateResolution.Year + + #An ISO string may be a calendar represntation if: + # 1) When split on a hyphen, the sizes of the parts are 4, 2, 2 or 4, 2 + # 2) There are no hyphens, and the length is 8 + datestrsplit = isodatestr.split('-') + + #Check case 1 + if len(datestrsplit) == 2: + if len(datestrsplit[0]) == 4 and len(datestrsplit[1]) == 2: + return DateResolution.Month + + if len(datestrsplit) == 3: + if len(datestrsplit[0]) == 4 and len(datestrsplit[1]) == 2 and len(datestrsplit[2]) == 2: + return DateResolution.Day + + #Check case 2 + if len(isodatestr) == 8 and isodatestr.find('-') == -1: + return DateResolution.Day + + #An ISO string may be a ordinal date representation if: + # 1) When split on a hyphen, the sizes of the parts are 4, 3 + # 2) There are no hyphens, and the length is 7 + + #Check case 1 + if len(datestrsplit) == 2: + if len(datestrsplit[0]) == 4 and len(datestrsplit[1]) == 3: + return DateResolution.Ordinal + + #Check case 2 + if len(isodatestr) == 7 and isodatestr.find('-') == -1: + return DateResolution.Ordinal + + #None of the date representations match + raise ValueError('String is not an ISO 8601 date, perhaps it represents a time or datetime.') + +def parse_date(isodatestr): + #Given a string in any ISO 8601 date format, return a datetime.date + #object that corresponds to the given date. Valid string formats are: + # + #Y[YYY] + #YYYY-MM-DD + #YYYYMMDD + #YYYY-MM + #YYYY-Www + #YYYYWww + #YYYY-Www-D + #YYYYWwwD + #YYYY-DDD + #YYYYDDD + # + #Note that the ISO 8601 date format of ±YYYYY is expressly not supported + return _resolution_map[get_date_resolution(isodatestr)](isodatestr) + +def _parse_year(yearstr): + #yearstr is of the format Y[YYY] + # + #0000 (1 BC) is not representible as a Python date so a ValueError is + #raised + # + #Truncated dates, like '19', refer to 1900-1999 inclusive, we simply parse + #to 1900-01-01 + # + #Since no additional resolution is provided, the month is set to 1, and + #day is set to 1 + + if len(yearstr) == 4: + return datetime.date(int(yearstr), 1, 1) + else: + #Shift 0s in from the left to form complete year + return datetime.date(int(yearstr.ljust(4, '0')), 1, 1) + +def _parse_calendar_day(datestr): + #datestr is of the format YYYY-MM-DD or YYYYMMDD + datestrlen = len(datestr) + + if datestrlen == 10: + #YYYY-MM-DD + strformat = '%Y-%m-%d' + elif datestrlen == 8: + #YYYYMMDD + strformat = '%Y%m%d' + else: + raise ValueError('String is not a valid ISO 8601 calendar day.') + + parseddatetime = datetime.datetime.strptime(datestr, strformat) + + #Since no 'time' is given, cast to a date + return parseddatetime.date() + +def _parse_calendar_month(datestr): + #datestr is of the format YYYY-MM + datestrlen = len(datestr) + + if datestrlen != 7: + raise ValueError('String is not a valid ISO 8601 calendar month.') + + parseddatetime = datetime.datetime.strptime(datestr, '%Y-%m') + + #Since no 'time' is given, cast to a date + return parseddatetime.date() + +def _parse_week_day(datestr): + #datestr is of the format YYYY-Www-D, YYYYWwwD + # + #W is the week number prefix, ww is the week number, between 1 and 53 + #0 is not a valid week number, which differs from the Python implementation + # + #D is the weekday number, between 1 and 7, which differs from the Python + #implementation which is between 0 and 6 + + isoyear = int(datestr[0:4]) + gregorianyearstart = _iso_year_start(isoyear) + + #Week number will be the two characters after the W + windex = datestr.find('W') + isoweeknumber = int(datestr[windex + 1:windex + 3]) + + if isoweeknumber == 0: + raise ValueError('00 is not a valid ISO 8601 weeknumber.') + + datestrlen = len(datestr) + + if datestr.find('-') != -1: + if datestrlen == 10: + #YYYY-Www-D + isoday = int(datestr[9:10]) + + return gregorianyearstart + datetime.timedelta(weeks=isoweeknumber - 1, days=isoday - 1) + else: + raise ValueError('String is not a valid ISO 8601 week date.') + else: + if datestrlen == 8: + #YYYYWwwD + isoday = int(datestr[7:8]) + + return gregorianyearstart + datetime.timedelta(weeks=isoweeknumber - 1, days=isoday - 1) + else: + raise ValueError('String is not a valid ISO 8601 week date.') + +def _parse_week(datestr): + #datestr is of the format YYYY-Www, YYYYWww + # + #W is the week number prefix, ww is the week number, between 1 and 53 + #0 is not a valid week number, which differs from the Python implementation + + isoyear = int(datestr[0:4]) + gregorianyearstart = _iso_year_start(isoyear) + + #Week number will be the two characters after the W + windex = datestr.find('W') + isoweeknumber = int(datestr[windex + 1:windex + 3]) + + if isoweeknumber == 0: + raise ValueError('00 is not a valid ISO 8601 weeknumber.') + + datestrlen = len(datestr) + + if datestr.find('-') != -1: + if datestrlen == 8: + #YYYY-Www + #Suss out the date + return gregorianyearstart + datetime.timedelta(weeks=isoweeknumber - 1, days=0) + else: + raise ValueError('String is not a valid ISO 8601 week date.') + else: + if datestrlen == 7: + #YYYYWww + return gregorianyearstart + datetime.timedelta(weeks=isoweeknumber - 1, days=0) + else: + raise ValueError('String is not a valid ISO 8601 week date.') + +def _parse_ordinal_date(datestr): + #datestr is of the format YYYY-DDD or YYYYDDD + #DDD can be from 1 - 365, this matches Python's definition + + if datestr.find('-') != -1: + #YYYY-DDD + parseddatetime = datetime.datetime.strptime(datestr, '%Y-%j') + + #Since no 'time' is given, cast to a date + return parseddatetime.date() + else: + #YYYYDDD + parseddatetime = datetime.datetime.strptime(datestr, '%Y%j') + + #Since no 'time' is given, cast to a date + return parseddatetime.date() + +def _iso_year_start(isoyear): + #Given an ISO year, returns the equivalent of the start of the year on the + #Gregorian calendar (which is used by Python) + #Stolen from: + #http://stackoverflow.com/questions/304256/whats-the-best-way-to-find-the-inverse-of-datetime-isocalendar + + #Determine the location of the 4th of January, the first week of the ISO + #year in the week containing the 4th of January + #http://en.wikipedia.org/wiki/ISO_week_date + fourth_jan = datetime.date(isoyear, 1, 4) + + #Note the conversion from ISO day (1 - 7) and Python day (0 - 6) + delta = datetime.timedelta(fourth_jan.isoweekday() - 1) + + #Return the start of the year + return fourth_jan - delta + +_resolution_map = { + DateResolution.Day: _parse_calendar_day, + DateResolution.Ordinal: _parse_ordinal_date, + DateResolution.Month: _parse_calendar_month, + DateResolution.Week: _parse_week, + DateResolution.Weekday: _parse_week_day, + DateResolution.Year: _parse_year +} diff --git a/appWSM/lib/python2.7/site-packages/aniso8601/duration.py b/appWSM/lib/python2.7/site-packages/aniso8601/duration.py new file mode 100644 index 0000000000000000000000000000000000000000..d1a1cea512a5e20a77bd841c066b8298e3c66c5d --- /dev/null +++ b/appWSM/lib/python2.7/site-packages/aniso8601/duration.py @@ -0,0 +1,259 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2016, Brandon Nielsen +# All rights reserved. +# +# This software may be modified and distributed under the terms +# of the BSD license. See the LICENSE file for details. + +import datetime +import dateutil.relativedelta + +from aniso8601.date import parse_date +from aniso8601.time import parse_time +from aniso8601 import compat + +def parse_duration(isodurationstr, relative=False): + #Given a string representing an ISO 8601 duration, return a + #datetime.timedelta (or dateutil.relativedelta.relativedelta + #if relative=True) that matches the given duration. Valid formats are: + # + #PnYnMnDTnHnMnS (or any reduced precision equivalent) + #PT