def testCreation(self): base_date = xsd.dateTime('2000-01-10T00:00:00') delta_date = xsd.dateTime('2000-01-06T19:52:37.5') v = xsd.duration(base_date - delta_date) self.assertEqual(3, v.days) self.assertEqual(14842, v.seconds) self.assertEqual('P3DT4H7M22.5S', v.xsdLiteral())
def testAddition(self): date = xsd.dateTime(2002, 10, 27, 12, 14, 32) duration = xsd.duration('P3DT5H3M') self.assertEqual('2002-10-30T17:17:32', xsd.dateTime(date + duration).xsdLiteral()) self.assertEqual('2002-10-24T07:11:32', xsd.dateTime(date - duration).xsdLiteral())
def testCreation(self): base_date = xsd.dateTime('2000-01-10T00:00:00') delta_date = xsd.dateTime('2000-01-06T19:52:37.5') v = xsd.duration(base_date - delta_date) self.assertEqual(3, v.days) self.assertEqual(14842, v.seconds) self.assertEqual('P3DT4H7M22.5S', v.xsdLiteral()) self.assertRaises(pyxb.SimpleTypeValueError, xsd.duration) self.assertRaises(pyxb.SimpleTypeValueError, xsd.duration, 4)
def testNegative(self): v = xsd.duration('-P3DT4H7M23.5S') # Time is 19H52M36.5S into day -4 base_date = xsd.dateTime('2000-01-10T00:00:00') delta_date = xsd.dateTime(base_date + v) self.assertEqual(-4, v.days) self.assertEqual(36 + 60 * (52 + 60 * 19), v.seconds) self.assertEqual(500000, v.microseconds) self.assertEqual('2000-01-06T19:52:36.5', delta_date.xsdLiteral())
def testCreation (self): base_date = xsd.dateTime('2000-01-10T00:00:00') delta_date = xsd.dateTime('2000-01-06T19:52:37.5') v = xsd.duration(base_date - delta_date) self.assertEqual(3, v.days) self.assertEqual(14842, v.seconds) self.assertEqual('P3DT4H7M22.5S', v.xsdLiteral()) self.assertRaises(pyxb.SimpleTypeValueError, xsd.duration) self.assertRaises(pyxb.SimpleTypeValueError, xsd.duration, 4)
def testNormalize (self): dt = xsd.dateTime('2000-03-04T23:00:00+03:00') self.assertEqual('2000-03-04T20:00:00Z', dt.xsdLiteral()) pdt = datetime.datetime(year=2000, month=3, day=4, hour=23, tzinfo=UTCOffsetTimeZone(180)) self.assertEqual('2000-03-04 23:00:00+03:00', str(pdt)) dt = xsd.dateTime(pdt) self.assertEqual('2000-03-04T20:00:00Z', dt.xsdLiteral()) dt = xsd.dateTime(2000, 3, 4, 23, tzinfo=UTCOffsetTimeZone(180)) self.assertEqual('2000-03-04T20:00:00Z', dt.xsdLiteral())
def testXsdLiteral (self): dt = xsd.dateTime('2002-10-27T12:14:32Z') self.assertEqual('2002-10-27T12:14:32Z', dt.xsdLiteral()) self.assertTrue(dt.tzinfo is not None) self.assertEqual('2002-10-27T07:14:32Z', xsd.dateTime('2002-10-27T12:14:32+05:00').xsdLiteral()) self.assertEqual('2002-10-27T17:14:32Z', xsd.dateTime('2002-10-27T12:14:32-05:00').xsdLiteral()) self.assertEqual('2002-10-27T17:14:32.1234Z', xsd.dateTime('2002-10-27T12:14:32.123400-05:00').xsdLiteral()) # No zone info dt = xsd.dateTime('2002-10-27T12:14:32') self.assertEqual('2002-10-27T12:14:32', dt.xsdLiteral()) self.assertFalse(dt.tzinfo is not None)
def testNegative (self): v = xsd.duration('-P3DT4H7M23.5S') # Time is 19H52M36.5S into day -4 base_date = xsd.dateTime('2000-01-10T00:00:00') delta_date = xsd.dateTime(base_date + v) self.assertEqual(-4, v.days) self.assertEqual(36 + 60 * (52 + 60 * 19), v.seconds) self.assertEqual(500000, v.microseconds) self.assertEqual('2000-01-06T19:52:36.5', delta_date.xsdLiteral()) td = datetime.timedelta(days=-1) v = xsd.duration(td) self.assertEqual(v, td) delta_date = xsd.dateTime(base_date + v) self.assertEqual('2000-01-09T00:00:00', delta_date.xsdLiteral())
def dateTimeWithoutSeconds(str): pattern = re.compile(r'^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})Z$', re.IGNORECASE) matched = re.match(pattern, str) if matched: year = int(matched.group(1)) month = int(matched.group(2)) date = int(matched.group(3)) hour = int(matched.group(4)) minute = int(matched.group(5)) xsd.dateTime(year, month, date, hour, minute) return '{:d}-{:02d}-{:02d}T{:02d}:{:02d}:00Z'.format( year, month, date, hour, minute) raise ValueError('Invalid date time without seconds: {}'.format(str))
def testFromText (self): self.verifyTime(xsd.dateTime(' 2002-10-27T12:14:32', _from_xml=True), with_usec=False, with_tzinfo=False) self.verifyTime(xsd.dateTime('2002-10-27T12:14:32 ', _from_xml=True), with_usec=False, with_tzinfo=False) self.verifyTime(xsd.dateTime('2002-10-27T12:14:32'), with_usec=False, with_tzinfo=False) self.verifyTime(xsd.dateTime('2002-10-27T12:14:32.1234'), with_tzinfo=False) self.verifyTime(xsd.dateTime('2002-10-27T12:14:32Z'), with_usec=False) self.verifyTime(xsd.dateTime('2002-10-27T12:14:32.1234Z')) self.verifyTime(xsd.dateTime('2002-10-27T12:14:32.1234+05:00'), with_adj=(-5,0)) self.verifyTime(xsd.dateTime('2002-10-27T12:14:32.1234Z'))
def XtestBogus(self): dt = xsd.dateTime.today() print dt.xsdLiteral() print str(dt) print dt.aslocal() # NB: duration does not support months in Python version delta = xsd.duration('P%dD' % (365 / 2)) dt = xsd.dateTime(dt + delta) print dt.xsdLiteral() print str(dt) print dt.aslocal()
def XtestBogus (self): dt = xsd.dateTime.today() print(dt.xsdLiteral()) print(str(dt)) print(dt.aslocal()) # NB: duration does not support months in Python version delta = xsd.duration('P%dD' % (365 / 2)) dt = xsd.dateTime(dt + delta) print(dt.xsdLiteral()) print(str(dt)) print(dt.aslocal())
def testPreservation (self): value = xs.dateTime(self.Literal) self.assertEqual(value.xsdLiteral(), self.Literal)
def testPreserve (self): pyxb.PreserveInputTimeZone(True) self.assertTrue(pyxb.PreserveInputTimeZone()) dt = xsd.dateTime(self.Time) self.assertEqual('2013-08-30 11:56:45+04:00', str(dt)) self.assertEqual('2013-08-30 09:56:45+02:00', str(dt.aslocal()))
def testPreserve(self): pyxb.PreserveInputTimeZone(True) self.assertTrue(pyxb.PreserveInputTimeZone()) dt = xsd.dateTime(self.Time) self.assertEqual('2013-08-30 11:56:45+04:00', str(dt)) self.assertEqual('2013-08-30 09:56:45+02:00', str(dt.aslocal()))
def testBasic (self): self.assertFalse(pyxb.PreserveInputTimeZone()) dt = xsd.dateTime(self.Time) self.assertEqual('2013-08-30 07:56:45+00:00', str(dt)) self.assertEqual('2013-08-30 09:56:45+02:00', str(dt.aslocal()))
def testAddition (self): date = xsd.dateTime(2002, 10, 27, 12, 14, 32) duration = xsd.duration('P3DT5H3M') self.assertEqual('2002-10-30T17:17:32', xsd.dateTime(date + duration).xsdLiteral()) self.assertEqual('2002-10-24T07:11:32', xsd.dateTime(date - duration).xsdLiteral())
from __future__ import print_function import xml.dom.minidom import DWML import datetime import pyxb.binding.datatypes as xsd from pyxb.utils.six.moves.urllib.request import urlopen import time import collections import sys # Get the next seven days forecast for two locations zip = [85711, 55108] if 1 < len(sys.argv): zip = sys.argv[1:] begin = xsd.dateTime.today() end = xsd.dateTime(begin + datetime.timedelta(7)) # Create the REST URI for this query uri = 'http://www.weather.gov/forecasts/xml/sample_products/browser_interface/ndfdXMLclient.php?zipCodeList=%s&product=time-series&begin=%s&end=%s&maxt=maxt&mint=mint' % ( "+".join([str(_zc) for _zc in zip]), begin.xsdLiteral(), end.xsdLiteral()) print(uri) # Retrieve the data xmld = urlopen(uri).read() open('forecast.xml', 'wb').write(xmld) #print xmld # Convert it to DWML object r = DWML.CreateFromDocument(xmld) product = r.head.product
from __future__ import print_function import xml.dom.minidom import DWML import datetime import pyxb.binding.datatypes as xsd from pyxb.utils.six.moves.urllib.request import urlopen import time import collections import sys # Get the next seven days forecast for two locations zip = [ 85711, 55108 ] if 1 < len(sys.argv): zip = sys.argv[1:] begin = xsd.dateTime.today() end = xsd.dateTime(begin + datetime.timedelta(7)) # Create the REST URI for this query uri = 'http://www.weather.gov/forecasts/xml/sample_products/browser_interface/ndfdXMLclient.php?zipCodeList=%s&product=time-series&begin=%s&end=%s&maxt=maxt&mint=mint' % ("+".join([ str(_zc) for _zc in zip ]), begin.xsdLiteral(), end.xsdLiteral()) print(uri) # Retrieve the data xmld = urlopen(uri).read() open('forecast.xml', 'wb').write(xmld) #print xmld # Convert it to DWML object r = DWML.CreateFromDocument(xmld) product = r.head.product print('%s %s' % (product.title, product.category))
import opengis.gml import opengis.ows import pyxb.binding.datatypes as xsd import sys parameters = ['mint', 'maxt', 'temp', 'pop12', 'wspd', 'wdir'] url_base = 'http://www.weather.gov/forecasts/xml/OGC_services/ndfdOWSserver.php' kw = { 'service': 'WFS', 'version': '1.1.0', 'typename': 'Forecast_GmlObs', 'Request': 'GetFeature', #'latLonList' : '44.9893,-93.1515', 'latLonList': '32.2281,-110.899', 'time': xsd.dateTime(xsd.dateTime.today() + xsd.duration('PT12H')).xsdLiteral(), 'params': ','.join(parameters) } url = url_base + '?' + '&'.join('%s=%s' % _v for _v in kw.items()) xmls = urllib2.urlopen(url).read() file('xforecast.xml', 'w').write(xmls) #xmls = file('xforecast.xml').read() res = ndfd.dwGML.CreateFromDocument(xmls) if res._element() == opengis.ows.ExceptionReport: for ex in res.Exception(): print '%s (%s): %s' % (ex.exceptionCode(), ex.locator(), ''.join( [_txt for _txt in ex.ExceptionText()]))
def testBasic(self): self.assertFalse(pyxb.PreserveInputTimeZone()) dt = xsd.dateTime(self.Time) self.assertEqual('2013-08-30 07:56:45+00:00', str(dt)) self.assertEqual('2013-08-30 09:56:45+02:00', str(dt.aslocal()))
# Coordinates for which weather is requested. See examples/geocoder # for a utility that obtains the lat/lon for a US street address. lat_lon = [ '38.898748', '-77.037684' ] if 3 <= len(sys.argv): lat_lon = sys.argv[1:3] parameters = [ 'mint', 'maxt', 'temp', 'pop12', 'wspd', 'wdir' ] url_base = 'http://www.weather.gov/forecasts/xml/OGC_services/ndfdOWSserver.php' kw = { 'service' : 'WFS', 'version' : '1.1.0', 'typename' : 'Forecast_GmlObs', 'Request' : 'GetFeature', 'latLonList' : ','.join(lat_lon), 'time' : xsd.dateTime(xsd.dateTime.today() + xsd.duration('PT12H')).xsdLiteral(), 'params' : ','.join(parameters) } url = url_base + '?' + '&'.join('%s=%s' % _v for _v in kw.items()) print '# Retrieving %s' % (url,) xmls = urllib2.urlopen(url).read() file('forecast.xml', 'w').write(xmls) #xmls = file('forecast.xml').read() print '# Parsing response' res = ndfd.dwGML.CreateFromDocument(xmls) if res._element() == pyxb.bundles.opengis.ows.ExceptionReport: for ex in res.Exception: