Add PEP8 check and fix related issues
- Add PEP8 section to tox.ini - Add hacking to requirements to enforce OpenStack style requirements - Fix formatting issues flagged by flake8 check - Add copyright notices to all remaining files - Update .gitignore file Change-Id: I6f6f97ca1291000acee7e925826bf853b2cc8744
This commit is contained in:
parent
f392a3f97a
commit
30a64c67c1
4
.gitignore
vendored
4
.gitignore
vendored
@ -52,3 +52,7 @@ coverage.xml
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# IDE Project Files
|
||||
*.project
|
||||
*.pydev*
|
||||
*.idea
|
||||
|
@ -16,7 +16,6 @@
|
||||
import ConfigParser
|
||||
import traceback
|
||||
|
||||
|
||||
import falcon
|
||||
import simport
|
||||
|
||||
@ -49,7 +48,7 @@ def _initialize(enabled_versions, implementation_map):
|
||||
if not impl:
|
||||
raise NotImplemented("No implementation available for Quincy"
|
||||
" version %d" % version)
|
||||
print "Version %d using %s" % (version, impl)
|
||||
print("Version %d using %s" % (version, impl))
|
||||
routes.append(klass(version, api, impl))
|
||||
|
||||
# TODO(sandy): We need to create the top-level /v1, ... /vN
|
||||
@ -58,7 +57,8 @@ def _initialize(enabled_versions, implementation_map):
|
||||
|
||||
|
||||
def _get_api(config_location=None):
|
||||
print "Using config_location=%s (None means default impl)" % config_location
|
||||
print("Using config_location=%s (None means default impl)"
|
||||
% config_location)
|
||||
|
||||
# The default implementation is internal and works with
|
||||
# a fake/static set of data.
|
||||
@ -77,8 +77,8 @@ def _get_api(config_location=None):
|
||||
config = ConfigParser.ConfigParser()
|
||||
config.read(config_location)
|
||||
enabled_versions = [int(x) for x in
|
||||
config.get('global', 'enabled_versions')
|
||||
.split(',')]
|
||||
config.get('global',
|
||||
'enabled_versions').split(',')]
|
||||
|
||||
# Rather than every implementation duplicate resources, the
|
||||
# scratchpad is a shared storage area all the implementations
|
||||
@ -86,7 +86,7 @@ def _get_api(config_location=None):
|
||||
scratchpad = {}
|
||||
impl_map = {}
|
||||
_load_implementations(impl_map, enabled_versions, local_config,
|
||||
scratchpad)
|
||||
scratchpad)
|
||||
|
||||
if config_location:
|
||||
# Overlay the impl_map with the implementations
|
||||
@ -94,13 +94,12 @@ def _get_api(config_location=None):
|
||||
_load_implementations(impl_map, enabled_versions, config,
|
||||
scratchpad)
|
||||
|
||||
|
||||
return _initialize(enabled_versions, impl_map)
|
||||
|
||||
|
||||
def get_api(config_location=None):
|
||||
try:
|
||||
return _get_api(config_location)
|
||||
except Exception as e:
|
||||
print "Error getting API:", traceback.format_exc()
|
||||
except Exception:
|
||||
print("Error getting API:", traceback.format_exc())
|
||||
return None
|
||||
|
@ -1,10 +1,24 @@
|
||||
import json
|
||||
# Copyright (c) 2014 Dark Secret Software Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import datetime
|
||||
import json
|
||||
import timex
|
||||
|
||||
|
||||
class ObjectEncoder(json.JSONEncoder):
|
||||
|
||||
ENCODE_MAP = {datetime.datetime: "datetime",
|
||||
timex.TimeRange: "timex.TimeRange",
|
||||
timex.Timestamp: "timex.Timestamp"}
|
||||
@ -12,20 +26,21 @@ class ObjectEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if type(obj) in self.ENCODE_MAP:
|
||||
typename = self.ENCODE_MAP[type(obj)]
|
||||
encoder = getattr(self, '_encode_' + typename.replace('.', '_').lower())
|
||||
encoder = getattr(self,
|
||||
'_encode_' + typename.replace('.', '_').lower())
|
||||
return encoder(obj, typename)
|
||||
return super(ObjectEncoder, self).default(obj)
|
||||
|
||||
def _encode_datetime(self, obj, name):
|
||||
return {'__type__' : name,
|
||||
return {'__type__': name,
|
||||
'datetime': obj.isoformat()}
|
||||
|
||||
def _encode_timex_timestamp(self, obj, name):
|
||||
return {'__type__' : name,
|
||||
return {'__type__': name,
|
||||
'timestamp': obj.timestamp.isoformat()}
|
||||
|
||||
def _encode_timex_timerange(self, obj, name):
|
||||
return {'__type__' : name,
|
||||
return {'__type__': name,
|
||||
'begin': obj.begin.isoformat(),
|
||||
'end': obj.end.isoformat()}
|
||||
|
||||
|
@ -19,7 +19,7 @@ from dateutil import parser
|
||||
|
||||
import common
|
||||
|
||||
#set this to something reasonable.
|
||||
# set this to something reasonable.
|
||||
DEFAULT_LIMIT = 200
|
||||
|
||||
|
||||
@ -58,12 +58,12 @@ def _find_streams(impl, req, resp, count=False):
|
||||
younger_than = parser.parse(younger_than)
|
||||
|
||||
return impl.find_streams(count=count,
|
||||
older_than=older_than,
|
||||
younger_than=younger_than,
|
||||
state=state,
|
||||
trigger_name=trigger,
|
||||
distinguishing_traits=traits,
|
||||
mark=mark, limit=limit)
|
||||
older_than=older_than,
|
||||
younger_than=younger_than,
|
||||
state=state,
|
||||
trigger_name=trigger,
|
||||
distinguishing_traits=traits,
|
||||
mark=mark, limit=limit)
|
||||
|
||||
|
||||
def _get_stream(impl, req, resp, stream_id):
|
||||
@ -86,7 +86,7 @@ class StreamCollection(common.FalconBase):
|
||||
#
|
||||
# Actions on a Stream:
|
||||
# details - get full details on stream (including events &
|
||||
# distriquishing traits)
|
||||
# distinguishing traits)
|
||||
def on_get(self, req, resp):
|
||||
streams = _find_streams(self.impl, req, resp)
|
||||
resp.body = jsonutil.dumps(streams)
|
||||
@ -151,7 +151,7 @@ class EventCollection(common.FalconBase):
|
||||
# Qualifiers:
|
||||
# datetime are ISO-8601 format, UTC
|
||||
# from_datetime - events with timestamp > from_datetime
|
||||
# default: now - 1hr
|
||||
# default: now - 1hr
|
||||
# to_datetime - events with timestamp < to_datetime
|
||||
# default: now
|
||||
# event_name - events of event type
|
||||
@ -199,6 +199,6 @@ class Schema(object):
|
||||
self.stream_item)
|
||||
self.api.add_route('%s/streams' % self._v(), self.stream_collection)
|
||||
|
||||
self.api.add_route('%s/events/{message_id}' % self._v(), self.event_item)
|
||||
self.api.add_route('%s/events/{message_id}' % self._v(),
|
||||
self.event_item)
|
||||
self.api.add_route('%s/events' % self._v(), self.event_collection)
|
||||
|
||||
|
@ -95,15 +95,17 @@ class Event(object):
|
||||
elif dtype == 2:
|
||||
d[t] = {
|
||||
"__type__": "timex.TimeRange",
|
||||
"begin": str(datetime.datetime.utcnow()
|
||||
- datetime.timedelta(minutes=random.randrange(500))),
|
||||
"begin": str(
|
||||
datetime.datetime.utcnow() - datetime.timedelta(
|
||||
minutes=random.randrange(500))),
|
||||
"end": str(datetime.datetime.utcnow())
|
||||
}
|
||||
elif dtype == 3:
|
||||
d[t] = {
|
||||
"__type__": "datetime",
|
||||
"datetime": str(datetime.datetime.utcnow()
|
||||
- datetime.timedelta(minutes=random.randrange(500)))
|
||||
"datetime": str(
|
||||
datetime.datetime.utcnow() - datetime.timedelta(
|
||||
minutes=random.randrange(500)))
|
||||
}
|
||||
|
||||
d.update({
|
||||
@ -151,7 +153,7 @@ class Impl(object):
|
||||
expiry = None
|
||||
if state != 'completed':
|
||||
finish = start + datetime.timedelta(
|
||||
minutes=max_duration_minutes)
|
||||
minutes=max_duration_minutes)
|
||||
if random.randrange(2) == 0:
|
||||
expiry = finish
|
||||
else:
|
||||
@ -175,13 +177,15 @@ class Impl(object):
|
||||
for event_id in range(100):
|
||||
name = random.choice(event_names)
|
||||
now = (datetime.datetime.utcnow() - datetime.timedelta(
|
||||
minutes=random.randrange(minutes_in_48_hrs)))
|
||||
minutes=random.randrange(minutes_in_48_hrs)))
|
||||
self.events.append(Event(event_id + 100, name, now))
|
||||
|
||||
return self.events
|
||||
|
||||
def find_streams(self, **kwargs):
|
||||
"""kwargs may be:
|
||||
"""Find streams
|
||||
|
||||
kwargs may be:
|
||||
count: True/False
|
||||
older_than
|
||||
younger_than
|
||||
|
@ -37,5 +37,5 @@ class Impl(v1_impl.Impl):
|
||||
for _ in range(4):
|
||||
ret.append(Archive(str(uuid.uuid4()),
|
||||
now.strftime(filename_template)))
|
||||
now += datetime.timedelta(hours = 1)
|
||||
now += datetime.timedelta(hours=1)
|
||||
return ret
|
||||
|
@ -1,3 +1,4 @@
|
||||
hacking>=0.10.0,<0.11
|
||||
python-dateutil
|
||||
falcon
|
||||
simport >= 0.0.dev0
|
||||
|
11
tox.ini
11
tox.ini
@ -1,5 +1,5 @@
|
||||
[tox]
|
||||
envlist = py26,py27
|
||||
envlist = py26,py27,pep8
|
||||
|
||||
[testenv]
|
||||
deps =
|
||||
@ -10,3 +10,12 @@ deps =
|
||||
simport
|
||||
|
||||
commands = nosetests -d -v --with-coverage --cover-inclusive --cover-package quincy []
|
||||
|
||||
[testenv:pep8]
|
||||
commands =
|
||||
flake8
|
||||
|
||||
[flake8]
|
||||
ignore =
|
||||
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg
|
||||
show-source = True
|
||||
|
Loading…
Reference in New Issue
Block a user