本文整理汇总了Python中socorro.lib.external_common.parse_arguments函数的典型用法代码示例。如果您正苦于以下问题:Python parse_arguments函数的具体用法?Python parse_arguments怎么用?Python parse_arguments使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了parse_arguments函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_parse_arguments_with_class_validators
def test_parse_arguments_with_class_validators(self):
class NumberConverter(object):
def clean(self, value):
conv = {'one': 1, 'two': 2, 'three': 3}
try:
return conv[value]
except KeyError:
raise ValueError('No idea?!')
# Define a set of filters with some types being non-trivial types
# but instead a custom validator.
filters = [
("param1", 0, NumberConverter()),
]
arguments = {
"param1": "one",
}
params_exp = DotDict()
params_exp.param1 = 1
params = external_common.parse_arguments(
filters,
arguments,
modern=True
)
assert params == params_exp
# note that a ValueError becomes a BadArgumentError
arguments = {
"param1": "will cause a ValueError in NumberConverter.clean",
}
with pytest.raises(BadArgumentError):
external_common.parse_arguments(filters, arguments, modern=True)
示例2: 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::REAL
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,
}
示例3: get_featured
def get_featured(self, **kwargs):
"""Return a list of featured versions for one, several or all products.
"""
filters = [
("products", None, ["list", "str"]),
]
params = external_common.parse_arguments(filters, kwargs)
sql = """
SELECT product_name, version_string
FROM product_info
WHERE is_featured = true
"""
sql_params = {}
if params.products and params.products[0]:
sql += " AND product_name IN %(product)s"
sql_params['product'] = tuple(params.products)
error_message = "Failed to retrieve featured versions from PostgreSQL"
sql_results = self.query(sql, sql_params, error_message=error_message)
hits = {}
total = 0
for row in sql_results:
total += 1
version = dict(zip(("product", "version"), row))
if version["product"] not in hits:
hits[version["product"]] = [version["version"]]
else:
hits[version["product"]].append(version["version"])
return {"total": total, "hits": hits}
示例4: get
def get(self, **kwargs):
filters = [
("vendor_hex", None, "str"),
("adapter_hex", None, "str"),
]
params = external_common.parse_arguments(filters, kwargs)
for key in ('vendor_hex', 'adapter_hex'):
if not params[key]:
raise MissingArgumentError(key)
sql_where = """
WHERE
vendor_hex = %(vendor_hex)s
AND
adapter_hex = %(adapter_hex)s
"""
sql_query = """
SELECT
vendor_hex, adapter_hex, vendor_name, adapter_name
FROM graphics_device
"""
results = self.query(sql_query + sql_where, params)
keys = 'vendor_hex', 'adapter_hex', 'vendor_name', 'adapter_name'
hits = [dict(zip(keys, x)) for x in results]
return {'hits': hits, 'total': len(hits)}
示例5: get
def get(self, **kwargs):
"""Return a single crash report from it's UUID. """
filters = [
("uuid", None, "str"),
]
params = external_common.parse_arguments(filters, kwargs)
day = int(params.uuid[-2:])
month = int(params.uuid[-4:-2])
# assuming we won't use this after year 2099
year = int("20%s" % params.uuid[-6:-4])
crash_date = datetime.date(year=year, month=month, day=day)
logger.debug("Looking for crash %s during day %s" % (params.uuid,
crash_date))
sql = """/* socorro.external.postgresql.crash.Crash.get */
SELECT reports.email, reports.url, reports.addons_checked,
( SELECT reports_duplicates.duplicate_of
FROM reports_duplicates
WHERE reports_duplicates.uuid = reports.uuid
) as duplicate_of
FROM reports
WHERE reports.uuid=%(uuid)s
AND reports.success IS NOT NULL
AND utc_day_is( reports.date_processed, %(crash_date)s)
"""
sql_params = {
"uuid": params.uuid,
"crash_date": crash_date
}
results = []
# Creating the connection to the DB
self.connection = self.database.connection()
cur = self.connection.cursor()
try:
results = db.execute(cur, sql, sql_params)
except psycopg2.Error:
util.reportExceptionAndContinue(logger)
json_result = {
"total": 0,
"hits": []
}
for crash in results:
row = dict(zip((
"email",
"url",
"addons_checked",
"duplicate_of"), crash))
json_result["hits"].append(row)
json_result["total"] = len(json_result["hits"])
self.connection.close()
return json_result
示例6: 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)}
示例7: get
def get(self, **kwargs):
"""Return JSON data of a crash report, given its uuid. """
filters = [
('uuid', None, 'str'),
('datatype', None, 'str')
]
params = external_common.parse_arguments(filters, kwargs)
if not params.uuid:
raise MissingArgumentError('uuid')
if not params.datatype:
raise MissingArgumentError('datatype')
store = self.config.filesystem.filesystem_class(self.config.filesystem)
datatype_method_mapping = {
'raw': 'get_raw_dump',
'meta': 'get_raw_crash',
'processed': 'get_processed'
}
get = store.__getattribute__(datatype_method_mapping[params.datatype])
try:
if params.datatype == 'raw':
return (get(params.uuid), 'application/octet-stream')
else:
return get(params.uuid)
except CrashIDNotFound:
if params.datatype == 'processed':
self.get(datatype='raw', uuid=params.uuid)
j = priorityjobs.Priorityjobs(config=self.config)
j.create(uuid=params.uuid)
raise ResourceUnavailable(params.uuid)
raise ResourceNotFound(params.uuid)
示例8: 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.Products.get_default_version */
SELECT product_name, version_string
FROM default_versions
"""
if params.products and params.products[0] != "":
params.products = tuple(params.products)
sql = "%s WHERE product_name IN %%(products)s" % sql
try:
connection = self.database.connection()
cursor = connection.cursor()
cursor.execute(sql, params)
results = cursor.fetchall()
except psycopg2.Error:
results = []
logger.error("Failed to retrieve default versions from PostgreSQL", exc_info=True)
finally:
connection.close()
products = {}
for row in results:
product = dict(zip(("product", "version"), row))
products[product["product"]] = product["version"]
return {"hits": products}
示例9: 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
try:
connection = self.database.connection()
cursor = connection.cursor()
return tcbs.twoPeriodTopCrasherComparison(cursor, params)
finally:
connection.close()
示例10: 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
示例11: 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 = [dict(zip(("category", "rule"), x)) for x in sql_results]
return {'hits': results, 'total': len(results)}
示例12: 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
示例13: 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, version_string
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 row in results:
product = dict(zip(("product", "version"), row))
products[product["product"]] = product["version"]
return {
"hits": products
}
示例14: 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)
}
示例15: get
def get(self, **kwargs):
"""Return a job in the priority queue. """
filters = [
("uuid", None, "str"),
]
params = external_common.parse_arguments(filters, kwargs)
if not params.uuid:
raise MissingArgumentError('uuid')
sql = """
/* socorro.external.postgresql.priorityjobs.Priorityjobs.get */
SELECT uuid FROM priorityjobs WHERE uuid=%(uuid)s
"""
error_message = "Failed to retrieve priorityjobs data from PostgreSQL"
results = self.query(sql, params, error_message=error_message)
jobs = []
for row in results:
job = dict(zip(("uuid",), row))
jobs.append(job)
return {
"hits": jobs,
"total": len(jobs)
}