本文整理汇总了Python中socorrolib.lib.external_common.parse_arguments函数的典型用法代码示例。如果您正苦于以下问题:Python parse_arguments函数的具体用法?Python parse_arguments怎么用?Python parse_arguments使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了parse_arguments函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get
def get(self, **kwargs):
filters = [
("vendor_hex", None, ["list", "str"]),
("adapter_hex", None, ["list", "str"]),
]
params = external_common.parse_arguments(filters, kwargs)
for key in ('vendor_hex', 'adapter_hex'):
param = params[key]
if not param:
raise MissingArgumentError(key)
params[key] = tuple(params[key])
sql_query = """
SELECT
vendor_hex, adapter_hex, vendor_name, adapter_name
FROM graphics_device
WHERE vendor_hex IN %(vendor_hex)s
AND adapter_hex IN %(adapter_hex)s
"""
results = self.query(sql_query, params)
hits = results.zipped()
return {
'hits': hits,
'total': len(hits)
}
开发者ID:ahlfors,项目名称:socorro,代码行数:28,代码来源:graphics_devices.py
示例2: create
def create(self, **kwargs):
"""Add a new job to the priority queue
"""
filters = [
("uuid", None, "str"),
]
params = external_common.parse_arguments(filters, kwargs)
if not params.uuid:
raise MissingArgumentError('uuid')
with self.context() as connection:
try:
self.config.logger.debug(
'Inserting priority job into RabbitMQ %s', params.uuid
)
connection.channel.basic_publish(
exchange='',
routing_key=self.config.priority_queue_name,
body=params.uuid,
properties=pika.BasicProperties(delivery_mode=2)
)
except ChannelClosed:
self.config.logger.error(
"Failed inserting priorityjobs data into RabbitMQ",
exc_info=True
)
return False
return True
开发者ID:ahlfors,项目名称:socorro,代码行数:30,代码来源:priorityjobs.py
示例3: _get_sql_params
def _get_sql_params(self, **kwargs):
filters = [
(
'date',
(
datetime.datetime.utcnow() - datetime.timedelta(days=1)
).date(),
'date'
),
(
'limit',
None,
int
),
]
params = external_common.parse_arguments(filters, kwargs)
sql = """
SELECT debug_file, debug_id, code_file, code_id
FROM missing_symbols
WHERE
date_processed = %(date)s AND
debug_file != '' AND
debug_id != ''
GROUP BY debug_file, debug_id, code_file, code_id
"""
if params['limit'] is not None:
sql += '\nLIMIT %(limit)s'
return sql, params
开发者ID:4thAce,项目名称:socorro,代码行数:28,代码来源:missing_symbols.py
示例4: get
def get(self, **kwargs):
"""Return a dict that holds the throttling value per build type
for a specific product."""
filters = [
('product', None, 'str'),
]
params = external_common.parse_arguments(filters, kwargs)
required = ('product',)
for key in required:
if not params.get(key):
raise MissingArgumentError(key)
sql = """
SELECT
build_type,
throttle
FROM product_build_types
WHERE product_name = %(product)s
"""
results = self.query(sql, params)
build_types = {}
for row in results.zipped():
build_types[row['build_type']] = row['throttle']
return {
'hits': build_types,
}
开发者ID:ahlfors,项目名称:socorro,代码行数:28,代码来源:product_build_types.py
示例5: get_signatures
def get_signatures(self, **kwargs):
"""Return top crashers by signatures.
See http://socorro.readthedocs.org/en/latest/middleware.html#tcbs
"""
filters = [
("product", None, "str"),
("version", None, "str"),
("crash_type", "all", "str"),
("to_date", datetimeutil.utc_now(), "datetime"),
("duration", datetime.timedelta(7), "timedelta"),
("os", None, "str"),
("limit", 100, "int"),
("date_range_type", None, "str")
]
params = external_common.parse_arguments(filters, kwargs)
params.logger = logger
# what the twoPeriodTopCrasherComparison() function does is that it
# makes a start date from taking the to_date - duration
if params.duration > datetime.timedelta(30):
raise BadArgumentError('Duration too long. Max 30 days.')
with self.get_connection() as connection:
return tcbs.twoPeriodTopCrasherComparison(connection, params)
开发者ID:ahlfors,项目名称:socorro,代码行数:26,代码来源:crashes.py
示例6: get_channels
def get_channels(self, **kwargs):
"""Return a list of release channels for one, several or all products.
"""
filters = [
("products", None, ["list", "str"]),
]
params = external_common.parse_arguments(filters, kwargs)
sql = """
SELECT
build_type AS channel,
product_name AS product
FROM product_info
"""
sql_params = {}
if params.products and params.products[0]:
sql += " WHERE product_name IN %(products)s"
sql_params['products'] = tuple(params.products)
error_message = "Failed to retrieve release channels from PostgreSQL"
sql_results = self.query(sql, sql_params, error_message=error_message)
channels = {}
for res in sql_results.zipped():
if res['product'] not in channels:
channels[res['product']] = [res['channel']]
else:
channels[res['product']].append(res['channel'])
return channels
开发者ID:ahlfors,项目名称:socorro,代码行数:31,代码来源:releases.py
示例7: get
def get(self, **kwargs):
'''Return data about a field from its name. '''
filters = [
('name', None, 'str'),
]
params = external_common.parse_arguments(filters, kwargs)
if not params.name:
raise MissingArgumentError("name")
sql = '''/* socorro.external.postgresql.field.Field.get */
SELECT
raw_field AS name,
transforms,
product
FROM data_dictionary
WHERE raw_field=%(name)s
'''
error_message = 'Failed to retrieve field data from PostgreSQL'
results = self.query(sql, params, error_message=error_message)
field_data = {
'name': None,
'transforms': None,
'product': None
}
if not results:
return field_data
field_data = results.zipped()[0]
return field_data
开发者ID:4thAce,项目名称:socorro,代码行数:34,代码来源:field.py
示例8: post
def post(self, **kwargs):
params = external_common.parse_arguments(self.filters, kwargs)
if not params.category:
raise MissingArgumentError('category')
if not params.rule:
raise MissingArgumentError('rule')
sql = """
/* socorro.external.postgresql.skiplist.SkipList.post */
INSERT INTO skiplist (category, rule)
VALUES (%s, %s);
"""
sql_params = [params.category, params.rule]
connection = self.database.connection()
try:
with connection.cursor() as cur:
cur.execute(sql, sql_params)
connection.commit()
except psycopg2.Error:
connection.rollback()
error_message = "Failed updating skip list in PostgreSQL"
logger.error(error_message)
raise DatabaseError(error_message)
finally:
connection.close()
return True
开发者ID:ahlfors,项目名称:socorro,代码行数:28,代码来源:skiplist.py
示例9: get
def get(self, **kwargs):
filters = [
("report_date", None, "datetime"),
("report_type", None, "str"),
("product", None, "str"),
("version", None, "str"),
("signature", None, "str"),
("platform", None, "str"),
("min_crashes", 10, "int"),
("min_baseline_diff", 0.05, "float"),
]
params = external_common.parse_arguments(filters, kwargs)
hits = []
if params['report_type'] == 'interesting-addons':
hits = self.interesting_addons(params)
elif params['report_type'] == 'interesting-modules':
hits = self.interesting_modules(params)
elif params['report_type'] == 'interesting-addons-with-version':
hits = self.interesting_addons_with_version(params)
elif params['report_type'] == 'interesting-modules-with-version':
hits = self.interesting_modules_with_version(params)
elif params['report_type'] == 'core-counts':
hits = self.core_counts(params)
else:
raise BadArgumentError(
'report_type',
received=report_type
)
return {
'hits': hits,
'total': len(hits)
}
开发者ID:ahlfors,项目名称:socorro,代码行数:35,代码来源:correlations.py
示例10: get
def get(self, **kwargs):
params = external_common.parse_arguments(self.filters, kwargs)
sql_params = []
sql = """
/* socorro.external.postgresql.skiplist.SkipList.get */
SELECT category,
rule
FROM skiplist
WHERE 1=1
"""
if params.category:
sql += 'AND category=%s'
sql_params.append(params.category)
if params.rule:
sql += 'AND rule=%s'
sql_params.append(params.rule)
# Use `UPPER()` to make the sort case insensitive
# which makes it more user-friendly on the UI later
sql += """
ORDER BY UPPER(category), UPPER(rule)
"""
error_message = "Failed to retrieve skip list data from PostgreSQL"
sql_results = self.query(sql, sql_params, error_message=error_message)
results = sql_results.zipped()
return {'hits': results, 'total': len(results)}
开发者ID:ahlfors,项目名称:socorro,代码行数:28,代码来源:skiplist.py
示例11: post
def post(self, **kwargs):
params = external_common.parse_arguments(self.filters, kwargs)
if not params['signatures']:
raise MissingArgumentError('signatures')
sql_params = [tuple(params['signatures'])]
sql = """
SELECT
signature,
first_report AS first_date,
first_build
FROM signatures
WHERE signature IN %s
"""
error_message = 'Failed to retrieve signatures from PostgreSQL'
results = self.query(sql, sql_params, error_message=error_message)
signatures = []
for sig in results.zipped():
sig['first_date'] = datetimeutil.date_to_string(sig['first_date'])
signatures.append(sig)
return {
'hits': signatures,
'total': len(signatures)
}
开发者ID:ahlfors,项目名称:socorro,代码行数:28,代码来源:signature_first_date.py
示例12: get_default_version
def get_default_version(self, **kwargs):
"""Return the default version of one or several products. """
filters = [
("products", None, ["list", "str"])
]
params = external_common.parse_arguments(filters, kwargs)
sql = """
/* socorro.external.postgresql.products.get_default_version */
SELECT
product_name AS product,
version_string AS version
FROM default_versions
"""
if params.products and params.products[0] != "":
params.products = tuple(params.products)
sql = "%s WHERE product_name IN %%(products)s" % sql
error_message = "Failed to retrieve default versions from PostgreSQL"
results = self.query(sql, params, error_message=error_message)
products = {}
for product in results.zipped():
products[product['product']] = product['version']
return {
"hits": products
}
开发者ID:4thAce,项目名称:socorro,代码行数:29,代码来源:products.py
示例13: get_adu_by_signature
def get_adu_by_signature(self, **kwargs):
"""Return a list of ADUs and crash counts by signature and ADU date
"""
now = datetimeutil.utc_now().date()
lastweek = now - datetime.timedelta(weeks=1)
filters = [
("start_date", lastweek, "date"),
("end_date", now, "date"),
("signature", None, "str"),
("channel", None, "str"),
("product_name", None, "str"),
]
params = external_common.parse_arguments(filters, kwargs)
for param in ("start_date", "end_date", "signature", "channel"):
if not params[param]:
raise MissingArgumentError(param)
if (params.end_date - params.start_date) > datetime.timedelta(days=365):
raise BadArgumentError('Duration too long. Max 365 days.')
sql_query = """
SELECT
product_name,
signature,
adu_date::TEXT,
build_date::TEXT,
buildid::TEXT,
crash_count,
adu_count,
os_name,
channel
FROM crash_adu_by_build_signature
WHERE adu_date BETWEEN %(start_date)s AND %(end_date)s
AND product_name = %(product_name)s
AND channel = %(channel)s
AND signature = %(signature)s
ORDER BY buildid
"""
error_message = (
"Failed to retrieve crash ADU by build signature from PostgreSQL"
)
results = self.query(sql_query, params, error_message=error_message)
crashes = results.zipped()
return {
"hits": crashes,
"total": len(crashes)
}
开发者ID:ahlfors,项目名称:socorro,代码行数:53,代码来源:crashes.py
示例14: get
def get(self, **kwargs):
filters = [
('date', datetime.datetime.utcnow().date(), 'date'),
('product', 'Firefox', 'str'),
]
params = external_common.parse_arguments(filters, kwargs)
params['tomorrow'] = params['date'] + datetime.timedelta(days=1)
results = self.query(SQL, params)
hits = results.zipped()
return {
'hits': hits,
'total': len(hits),
}
开发者ID:4thAce,项目名称:socorro,代码行数:13,代码来源:graphics_report.py
示例15: get
def get(self, **kwargs):
filters = [
('report_type', None, 'str'),
('product', None, 'str'),
('version', None, 'str'),
('platforms', None, 'list'),
]
params = external_common.parse_arguments(filters, kwargs)
try:
content = self._get_content(params)
except NotFoundError, msg:
self.config.logger.info('Failed to download %s' % msg)
return
开发者ID:4thAce,项目名称:socorro,代码行数:14,代码来源:correlations.py
示例16: post
def post(self, **kwargs):
'''Return the result of a custom query. '''
params = external_common.parse_arguments(self.filters, kwargs)
if not params.query:
raise MissingArgumentError('query')
try:
query = json.loads(params.query)
except ValueError:
raise BadArgumentError(
'query',
msg="Invalid JSON value for parameter 'query'"
)
# Set indices.
indices = []
if not params.indices:
# By default, use the last two indices.
today = datetimeutil.utc_now()
last_week = today - datetime.timedelta(days=7)
indices = self.generate_list_of_indexes(last_week, today)
elif len(params.indices) == 1 and params.indices[0] == 'ALL':
# If we want all indices, just do nothing.
pass
else:
indices = params.indices
search_args = {}
if indices:
search_args['index'] = indices
search_args['doc_type'] = (
self.config.elasticsearch.elasticsearch_doctype
)
connection = self.get_connection()
try:
results = connection.search(
body=query,
**search_args
)
except elasticsearch.exceptions.NotFoundError, e:
missing_index = re.findall(BAD_INDEX_REGEX, e.error)[0]
raise ResourceNotFound(
"elasticsearch index '%s' does not exist" % missing_index
)
开发者ID:ahlfors,项目名称:socorro,代码行数:48,代码来源:query.py
示例17: test_parse_arguments
def test_parse_arguments(self):
"""Test external_common.parse_arguments(). """
filters = [
("param1", "default", [str]),
("param2", None, int),
("param3", ["some", "default", "list"], [str]),
("param4", ["list", "of", 4, "values"], [str]),
("param5", None, bool),
("param6", None, datetime.date),
("param7", None, datetime.date),
("param8", None, datetime.datetime),
("param9", None, [str]),
]
arguments = {
"param1": "value1",
"unknown": 12345,
"param5": "true",
"param7": datetime.date(2016, 2, 9).isoformat(),
"param8": datetime.datetime(2016, 2, 9).isoformat(),
# note the 'param9' is deliberately not specified.
}
params_exp = util.DotDict()
params_exp.param1 = ["value1"]
params_exp.param2 = None
params_exp.param3 = ['some', 'default', 'list']
params_exp.param4 = ["list", "of", "4", "values"]
params_exp.param5 = True
params_exp.param6 = None
params_exp.param7 = datetime.date(2016, 2, 9)
params_exp.param8 = datetime.datetime(2016, 2, 9).replace(
tzinfo=isodate.UTC
)
params_exp.param9 = None
params = external_common.parse_arguments(
filters,
arguments,
modern=True
)
for key in params:
eq_(params[key], params_exp[key], '{}: {!r} != {!r}'.format(
key,
params[key],
params_exp[key]
))
eq_(params, params_exp)
开发者ID:mozilla,项目名称:socorrolib,代码行数:46,代码来源:test_external_common.py
示例18: get_count_by_day
def get_count_by_day(self, **kwargs):
"""Returns the number of crashes on a daily basis"""
filters = [
("signature", None, "str"),
("start_date", None, "date"),
("end_date", None, "date")
]
DATE_FORMAT = "%Y-%m-%d"
params = external_common.parse_arguments(filters, kwargs)
for param in ("signature", "start_date"):
if not params[param]:
raise MissingArgumentError(param)
if not params.end_date:
params.end_date = params.start_date + datetime.timedelta(1)
sql = """
SELECT
COUNT(*),
date_processed::date
FROM
reports_clean rc
JOIN signatures ON
rc.signature_id=signatures.signature_id
WHERE
rc.date_processed >= %(start_date)s AND
rc.date_processed::date < %(end_date)s AND
signatures.signature=%(signature)s
GROUP BY
rc.date_processed::date
"""
hits = {}
for count, date in self.query(sql, params):
hits[date.strftime(DATE_FORMAT)] = count
current = params.start_date
while current < params.end_date:
hits.setdefault(current.strftime(DATE_FORMAT), 0)
current += datetime.timedelta(1)
return {"hits": hits, "total": len(hits)}
开发者ID:ahlfors,项目名称:socorro,代码行数:46,代码来源:crashes.py
示例19: test_parse_arguments
def test_parse_arguments(self):
"""Test external_common.parse_arguments(). """
filters = [
("param1", "default", ["list", "str"]),
("param2", None, "int"),
("param3", ["list", "of", 4, "values"], ["list", "str"])
]
arguments = {
"param1": "value1",
"unknown": 12345
}
params_exp = util.DotDict()
params_exp.param1 = ["value1"]
params_exp.param2 = None
params_exp.param3 = ["list", "of", "4", "values"]
params = external_common.parse_arguments(filters, arguments)
eq_(params, params_exp)
开发者ID:peterbe,项目名称:socorrolib,代码行数:19,代码来源:test_external_common.py
示例20: get
def get(self, **kwargs):
"""Return a list of signatures-to-bug_ids or bug_ids-to-signatures
associations. """
params = external_common.parse_arguments(self.filters, kwargs)
if not params['signatures'] and not params['bug_ids']:
raise MissingArgumentError('specify one of signatures or bug_ids')
elif params['signatures'] and params['bug_ids']:
raise BadArgumentError('specify only one of signatures or bug_ids')
sql_params = []
if params['signatures']:
sql_params.append(tuple(params.signatures))
sql = """/* socorro.external.postgresql.bugs.Bugs.get */
SELECT ba.signature, bugs.id
FROM bugs
JOIN bug_associations AS ba ON bugs.id = ba.bug_id
WHERE EXISTS(
SELECT 1 FROM bug_associations
WHERE bug_associations.bug_id = bugs.id
AND signature IN %s
)
"""
elif params['bug_ids']:
sql_params.append(tuple(params.bug_ids))
sql = """/* socorro.external.postgresql.bugs.Bugs.get */
SELECT ba.signature, bugs.id
FROM bugs
JOIN bug_associations AS ba ON bugs.id = ba.bug_id
WHERE bugs.id IN %s
"""
error_message = "Failed to retrieve bug associations from PostgreSQL"
results = self.query(sql, sql_params, error_message=error_message)
bugs = results.zipped()
return {
"hits": bugs,
"total": len(bugs)
}
开发者ID:ahlfors,项目名称:socorro,代码行数:43,代码来源:bugs.py
注:本文中的socorrolib.lib.external_common.parse_arguments函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论