def test_places(): url = 'https://api.tokyometroapp.jp/api/v2/places?rdf:type=ug:Poi&lon=139.766926&lat=35.681265&radius=1000&acl:consumerKey=%s' % KEY query = TokyoMetroAPI(KEY).query('places').add_param( 'rdf:type', 'ug:Poi').add_param('lon', '139.766926').add_param( 'lat', '35.681265').add_param('radius', '1000') query_by_where = TokyoMetroAPI(KEY).places.add_param( 'rdf:type', 'ug:Poi').where('139.766926', '35.681265', '1000') query_by_where_with_num = TokyoMetroAPI(KEY).places.add_param( 'rdf:type', 'ug:Poi').where(139.766926, 35.681265, 1000) assert url == unicode(query) == unicode(query_by_where) == unicode( query_by_where_with_num)
def _pad_items(self, mapping=None, padding=0, max_len=48): kvs = {k: getattr(self, k) for k in self.__slots__ } if hasattr(self, '__slots__') else mapping or vars(self) if not kvs: return [] keys = [ellipsis(unicode(v)) for v in kvs.keys()] vals = [ellipsis(unicode(v)) for v in kvs.values()] key_width = max(map(len, keys)) + padding val_width = max(map(len, vals)) + padding base = '{:{to}{width}}' return sorted(( format(base, k, to='>', width=key_width), format(base, v, to='<', width=val_width) ) for k, v in zip(keys, vals) )
def station_timetable(query, railway_station): """ # 駅時刻表 query = tm.datapoints.STATION_TIMETABLE(TM.Ginza.Shibuya) """ return query.reset_params( ).add_param('rdf:type', 'odpt:StationTimetable' ).add_param('odpt:station', 'odpt.Station:' + unicode(railway_station) )
def train_information(query, railway=None): """ # 列車運行情報 query = tm.datapoints.TRAIN_INFORMATION() # query all railway information query = tm.datapoints.TRAIN_INFORMATION(TM.Ginza) """ query = query.reset_params().add_param('rdf:type', 'odpt:TrainInformation') if railway: query.add_param('odpt:railway', 'odpt.Railway:' + unicode(railway)) return query
def introspect(self): try: _repr = repr(self) except Exception as e: _repr = repr(e) try: _str = unicode(self) except Exception as e: _str = repr(e) print('\n========= Plain Introspection =========') print('repr : %s' % _repr) print('str : %s' % _str) if hasattr(self, '__slots__'): print('slots: %s' % self.__slots__) print('attrs:') print( '\n'.join('|'.join(line) for line in self._pad_items())) print('')
def autorun(args=None): try: option.register_commands() opt, unknown = option.arg_parser.parse_known_args(args) if not opt.command: # python2/3 compatibility raise option.ArgumentParserError('too few arguments') except (option.ArgumentParserError, ImportError) as e: print(e) help = option.arg_parser.format_help() print('\n%s\n\033[33m%s\033[0m\n' % (help, unicode(e))) else: try: return opt.generic_main() except Exception as e: tb = traceback.format_exc() print('\n%s\n\n\033[31m%s\033[0m' % ( '===============\nRuntime Error !\n===============', tb))
def autorun(args=None): try: option.register_commands() opt, unknown = option.arg_parser.parse_known_args(args) if not opt.command: # python2/3 compatibility raise option.ArgumentParserError('too few arguments') except (option.ArgumentParserError, ImportError) as e: print(e) help = option.arg_parser.format_help() print('\n%s\n\033[33m%s\033[0m\n' % (help, unicode(e))) else: try: return opt.generic_main() except Exception as e: tb = traceback.format_exc() print('\n%s\n\n\033[31m%s\033[0m' % ('===============\nRuntime Error !\n===============', tb))
def where(self, lon, lat, rad): return self.add_param('lon', unicode(lon)).add_param('lat', unicode(lat)).add_param('radius', unicode(rad))
def test_idea(): tm = TokyoMetroAPI(KEY) q = TokyoMetroQuery('datapoints') q.add_param('rdf:type', 'odpt:Train') querystring = 'datapoints?rdf:type=odpt:Train' tm._query = q assert 'https://api.tokyometroapp.jp/api/v2/' + querystring + '&acl:consumerKey=%s' % KEY == unicode( tm)
def test_functionality(): from tornado.httpclient import HTTPClient qs = 'https://api.tokyometroapp.jp/api/v2/places?rdf:type=ug:Poi&lon=139.705678&lat=35.678156&radius=500&acl:consumerKey=%s' % KEY query = TokyoMetroAPI(KEY).places.POI(139.705678, 35.678156, 500) assert qs == unicode(query)
def get(self): from tornado.httpclient import HTTPClient res = HTTPClient().fetch(unicode(self)) return ujson.loads(res.body)
def test_idea(): tm = TokyoMetroAPI(KEY) q = TokyoMetroQuery('datapoints') q.add_param('rdf:type', 'odpt:Train') querystring = 'datapoints?rdf:type=odpt:Train' tm._query = q assert 'https://api.tokyometroapp.jp/api/v2/' + querystring + '&acl:consumerKey=%s' % KEY == unicode(tm)
def test_namespace(): from tuve.compat.string import unicode assert 'TokyoMetro.Ginza.Shibuya' == unicode(TM.Ginza.Shibuya)
def test_api_endpoint(): from tuve.core.spec.common.endpoint import EndPoint ep = EndPoint(host='api.tokyometroapp.jp', nmspc_iter=['api', 'v2']) assert unicode(ep) == 'https://api.tokyometroapp.jp/api/v2'
def fork(self, params=False): return self.__class__(resource=unicode(self.resource), spec=self.spec, params=self.params if params else None)
def __str__(self): return '&'.join(unicode(param) for param in self)
def str(self): return unicode(self)
def test_places(): url = 'https://api.tokyometroapp.jp/api/v2/places?rdf:type=ug:Poi&lon=139.766926&lat=35.681265&radius=1000&acl:consumerKey=%s' % KEY query = TokyoMetroAPI(KEY).query('places').add_param('rdf:type', 'ug:Poi').add_param('lon', '139.766926').add_param('lat', '35.681265').add_param('radius', '1000') query_by_where = TokyoMetroAPI(KEY).places.add_param('rdf:type', 'ug:Poi').where('139.766926', '35.681265', '1000') query_by_where_with_num = TokyoMetroAPI(KEY).places.add_param('rdf:type', 'ug:Poi').where(139.766926, 35.681265, 1000) assert url == unicode(query) == unicode(query_by_where) == unicode(query_by_where_with_num)