)]}'
{"ceilometer/storage/impl_sqlalchemy.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"7770e989d448c89da759f1aed757b5787b2c63ce","unresolved":false,"context_lines":[{"line_number":658,"context_line":"                    new_traits.append(t)"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        # Note: we don\u0027t flush here, explicitly (unless a new trait or event"},{"line_number":661,"context_line":"        # does it). Otherwise, just wait until all the Events are staged."},{"line_number":662,"context_line":"        return (event, new_traits)"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"    def record_events(self, event_models):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2Fb7k%3D","line":661,"updated":"2013-09-04 19:12:57.000000000","message":"This has changed now. There were problems with nested transactions and duplicate exceptions. Likely only in sqlite, but it caused havoc with the tests. Flushes are done after each event now. But, you\u0027ll see all this on the rebase.","commit_id":"ef4969b4aa99a59a615a1fcb4ecc713e637dbed5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6d19fff38e010b3dfc545e497bc0987b4327fe32","unresolved":false,"context_lines":[{"line_number":51,"context_line":"from ceilometer.storage.sqlalchemy.models import Source"},{"line_number":52,"context_line":"from ceilometer.storage.sqlalchemy.models import Trait"},{"line_number":53,"context_line":"from ceilometer.storage.sqlalchemy.models import TraitType"},{"line_number":54,"context_line":"#from ceilometer.storage.sqlalchemy.models import UniqueName"},{"line_number":55,"context_line":"from ceilometer.storage.sqlalchemy.models import User"},{"line_number":56,"context_line":"from ceilometer import utils"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2B9E0%3D","line":54,"updated":"2013-11-18 06:17:04.000000000","message":"Above needs to be removed...","commit_id":"2f5a70283ffe771a663521652cb678066aa592d4"},{"author":{"_account_id":7368,"name":"Thomas Maddox","email":"me@thomasem.net","username":"thomasm"},"change_message_id":"e853e6edfb5fdcf1a933df5aac8d291a2949a79f","unresolved":false,"context_lines":[{"line_number":816,"context_line":"            session \u003d sqlalchemy_session.get_session()"},{"line_number":817,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":818,"context_line":"            tt \u003d session.query(TraitType).filter("},{"line_number":819,"context_line":"                TraitType.desc \u003d\u003d trait_type).first()"},{"line_number":820,"context_line":"            if not tt:"},{"line_number":821,"context_line":"                tt \u003d TraitType(trait_type, dtype)"},{"line_number":822,"context_line":"                session.add(tt)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2BwpQ%3D","line":819,"updated":"2013-11-20 16:07:09.000000000","message":"Is it possible that we\u0027d have two TraitTypes with the same description but different data types that need to be stored? I am wondering if a TraitType is defined by its name, or a combination of its name and type. In the latter case, the lookup may need to look for the combination, as opposed to just the name.\n\nA few examples: \u0027generated\u0027 could be a boolean, string, or datetime. Generated could be a state representation from an event (boolean or int to be interpreted as boolean), or a time something was generated (datetime), or the product of some generation task (string).","commit_id":"1071a6b3b80899104f25f6ec59c030bb6fb78f24"}],"ceilometer/storage/models.py":[{"author":{"_account_id":7368,"name":"Thomas Maddox","email":"me@thomasem.net","username":"thomasm"},"change_message_id":"e853e6edfb5fdcf1a933df5aac8d291a2949a79f","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    record of basic data types (int, date, float, etc)."},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    NONE_TYPE \u003d 0"},{"line_number":87,"context_line":"    TEXT_TYPE \u003d 1"},{"line_number":88,"context_line":"    INT_TYPE \u003d 2"},{"line_number":89,"context_line":"    FLOAT_TYPE \u003d 3"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2BwgM%3D","line":86,"updated":"2013-11-20 16:07:09.000000000","message":"Good call. We do get blank traits in notifications. :)","commit_id":"1071a6b3b80899104f25f6ec59c030bb6fb78f24"}],"ceilometer/storage/sqlalchemy/migrate_repo/versions/014_add_trait_types.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"c634122d673f6272a8ced638314aad971fd8f2c2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fb9E%3D","line":1,"updated":"2013-09-04 19:13:32.000000000","message":"This will need to change to 015_ now (rebase needed)","commit_id":"e7dc2f9b843b50581fab48c39de03a8c9e750076"}],"ceilometer/storage/sqlalchemy/migrate_repo/versions/022_add_trait_types.py":[{"author":{"_account_id":7368,"name":"Thomas Maddox","email":"me@thomasem.net","username":"thomasm"},"change_message_id":"e853e6edfb5fdcf1a933df5aac8d291a2949a79f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    sql \u003d (\"UPDATE trait \""},{"line_number":124,"context_line":"           \"SET t_type \u003d trait_type.dtype \""},{"line_number":125,"context_line":"           \"FROM trait \""},{"line_number":126,"context_line":"           \"INNJER JOIN trait_type \""},{"line_number":127,"context_line":"           \"ON trait.name_id \u003d trait_type.id\")"},{"line_number":128,"context_line":"    conn.execute(sql)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2Bwdc%3D","line":126,"updated":"2013-11-20 16:07:09.000000000","message":"INNER*\n\nMight want to run this through the motions to be sure it\u0027ll work, the unit tests only go up; I don\u0027t think they go down.\n\nI know there\u0027s work underway to automate a test that does: upgrade --\u003e downgrade --\u003e upgrade for all migrations.","commit_id":"1071a6b3b80899104f25f6ec59c030bb6fb78f24"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3849e6d161f6e8d90adeaec6b19ad1ecbd0de51e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    query \u003d select([trait.c.id, trait.c.name_id])"},{"line_number":65,"context_line":"    for key, value in migration.paged(query):"},{"line_number":66,"context_line":"        trait.update().where(trait.c.id \u003d\u003d key)\\"},{"line_number":67,"context_line":"            .values({\"trait_type_id\": value}).execute()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    trait.c.name_id.drop()"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BZFI%3D","line":67,"updated":"2013-11-26 16:06:52.000000000","message":"hmm... how come we have to move data between cols here but can just alter column name below?... same for downgrade","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"c935f628d788075f7aa0610d5e06e0e9157d95fd","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    query \u003d select([trait.c.id, trait.c.name_id])"},{"line_number":65,"context_line":"    for key, value in migration.paged(query):"},{"line_number":66,"context_line":"        trait.update().where(trait.c.id \u003d\u003d key)\\"},{"line_number":67,"context_line":"            .values({\"trait_type_id\": value}).execute()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    trait.c.name_id.drop()"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BYm0%3D","line":67,"in_reply_to":"AAAATn%2F%2BZFI%3D","updated":"2013-11-26 18:23:43.000000000","message":"I tried that originally - sqlalchemy would not let me add a new FK constraint to a re-named column for some reason. I asked Jay Pipes about it, and he says he has seen similar issues. I could not figure out how to get it to work, so I did this instead.","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3849e6d161f6e8d90adeaec6b19ad1ecbd0de51e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    # it is necessary to disambiguate t_type with"},{"line_number":82,"context_line":"    # trait_type_id. data_type is a more explicit name"},{"line_number":83,"context_line":"    # for this column."},{"line_number":84,"context_line":"    trait.c.t_type.alter(name\u003d\u0027data_type\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    # Finally, drop the unique_name table - we don\u0027t need it"},{"line_number":87,"context_line":"    # anymore."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BZDE%3D","line":84,"updated":"2013-11-26 16:06:52.000000000","message":"what is this column for? seems to be duplicate of data_type column in TraitType table... same for downgrade","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"c935f628d788075f7aa0610d5e06e0e9157d95fd","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    # it is necessary to disambiguate t_type with"},{"line_number":82,"context_line":"    # trait_type_id. data_type is a more explicit name"},{"line_number":83,"context_line":"    # for this column."},{"line_number":84,"context_line":"    trait.c.t_type.alter(name\u003d\u0027data_type\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    # Finally, drop the unique_name table - we don\u0027t need it"},{"line_number":87,"context_line":"    # anymore."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BYlo%3D","line":84,"in_reply_to":"AAAATn%2F%2BZDE%3D","updated":"2013-11-26 18:23:43.000000000","message":"ah, a mistake. I had originally left data_type in the trait table, then decided to move it to the trait_type table. i will remove this and just drop t_type instead. Good catch!","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3849e6d161f6e8d90adeaec6b19ad1ecbd0de51e","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    # Finally, drop the unique_name table - we don\u0027t need it"},{"line_number":87,"context_line":"    # anymore."},{"line_number":88,"context_line":"    unique_name.drop()"},{"line_number":89,"context_line":"    conn.close()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def downgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BZAw%3D","line":89,"updated":"2013-11-26 16:06:52.000000000","message":"we can probably close this connection earlier... doesn\u0027t seem to be use after conn.execute(sql)... same for downgrade","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"c935f628d788075f7aa0610d5e06e0e9157d95fd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    # Finally, drop the unique_name table - we don\u0027t need it"},{"line_number":87,"context_line":"    # anymore."},{"line_number":88,"context_line":"    unique_name.drop()"},{"line_number":89,"context_line":"    conn.close()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def downgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BYmo%3D","line":89,"in_reply_to":"AAAATn%2F%2BZAw%3D","updated":"2013-11-26 18:23:43.000000000","message":"ok, good call","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8735e935d23e5614c8beaff5fe2f7883bcbb6209","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    # Finally, drop the unique_name table - we don\u0027t need it"},{"line_number":83,"context_line":"    # anymore."},{"line_number":84,"context_line":"    unique_name.drop()"},{"line_number":85,"context_line":"    conn.close()"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def downgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BT%2Fs%3D","line":85,"updated":"2013-11-27 14:26:58.000000000","message":"i think we can move conn.close() after conn.execute(sql)... same as below","commit_id":"b89664153d05c09129f29fcb9ea1e3d664cd3530"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c8ea1a6fec46788d8c02366f1a6b998126ea90bb","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    # key constraint"},{"line_number":55,"context_line":"    params \u003d {\u0027columns\u0027: [trait.c.name_id],"},{"line_number":56,"context_line":"              \u0027refcolumns\u0027: [unique_name.c.id]}"},{"line_number":57,"context_line":"    if migrate_engine.name \u003d\u003d \u0027mysql\u0027:"},{"line_number":58,"context_line":"        params[\u0027name\u0027] \u003d \"trait_ibfk_1\"  # foreign key to the unique name table"},{"line_number":59,"context_line":"    fkey \u003d ForeignKeyConstraint(**params)"},{"line_number":60,"context_line":"    fkey.drop()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F%2BNcs%3D","line":57,"updated":"2013-11-29 05:12:12.000000000","message":"I\u0027m not sure here. why mysql get special treatment? How about postgre?","commit_id":"fbea7d3116676fe4b99e4405d73a2c1346897b29"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"1fcee382331270148211c636accaf83ee1df2254","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    # key constraint"},{"line_number":55,"context_line":"    params \u003d {\u0027columns\u0027: [trait.c.name_id],"},{"line_number":56,"context_line":"              \u0027refcolumns\u0027: [unique_name.c.id]}"},{"line_number":57,"context_line":"    if migrate_engine.name \u003d\u003d \u0027mysql\u0027:"},{"line_number":58,"context_line":"        params[\u0027name\u0027] \u003d \"trait_ibfk_1\"  # foreign key to the unique name table"},{"line_number":59,"context_line":"    fkey \u003d ForeignKeyConstraint(**params)"},{"line_number":60,"context_line":"    fkey.drop()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAATn%2F%2BL4c%3D","line":57,"in_reply_to":"AAAATn%2F%2BNcs%3D","updated":"2013-11-29 14:19:21.000000000","message":"Postgres works fine.\n\nMySQL gets this error when I don\u0027t drop the fk by name:\n2013-11-29 07:17:32.727 22780 TRACE ceilometer OperationalError: (OperationalError) (1025, \"Error on rename of \u0027./ceilometer/trait\u0027 to \u0027./ceilometer/#sql2-5168-402\u0027 (errno: 152)\") \u0027ALTER TABLE trait DROP FOREIGN KEY trait_name_id_fkey\u0027 ()","commit_id":"fbea7d3116676fe4b99e4405d73a2c1346897b29"}],"ceilometer/storage/sqlalchemy/migrate_repo/versions/022_sqlite_upgrade.sql":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3849e6d161f6e8d90adeaec6b19ad1ecbd0de51e","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"CREATE TABLE trait_type ("},{"line_number":4,"context_line":"  id INTEGER PRIMARY KEY ASC,"},{"line_number":5,"context_line":"  desc STRING NOT NULL,"},{"line_number":6,"context_line":"  data_type INTEGER NOT NULL,"},{"line_number":7,"context_line":"  UNIQUE (desc, data_type)"},{"line_number":8,"context_line":");"}],"source_content_type":"text/x-sql","patch_set":18,"id":"AAAATn%2F%2BY84%3D","line":5,"updated":"2013-11-26 16:06:52.000000000","message":"does this need to be in quotes? desc is a reserved keyword... maybe we should switch everything to \u0027description\u0027","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"c935f628d788075f7aa0610d5e06e0e9157d95fd","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"CREATE TABLE trait_type ("},{"line_number":4,"context_line":"  id INTEGER PRIMARY KEY ASC,"},{"line_number":5,"context_line":"  desc STRING NOT NULL,"},{"line_number":6,"context_line":"  data_type INTEGER NOT NULL,"},{"line_number":7,"context_line":"  UNIQUE (desc, data_type)"},{"line_number":8,"context_line":");"}],"source_content_type":"text/x-sql","patch_set":18,"id":"AAAATn%2F%2BYYw%3D","line":5,"in_reply_to":"AAAATn%2F%2BY84%3D","updated":"2013-11-26 18:23:43.000000000","message":"sqlite doesn\u0027t seem to care about desc in this case. My preference is to keep it desc for compatibility with event_type and brevity.","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8735e935d23e5614c8beaff5fe2f7883bcbb6209","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"CREATE TABLE trait_type ("},{"line_number":4,"context_line":"  id INTEGER PRIMARY KEY ASC,"},{"line_number":5,"context_line":"  desc STRING NOT NULL,"},{"line_number":6,"context_line":"  data_type INTEGER NOT NULL,"},{"line_number":7,"context_line":"  UNIQUE (desc, data_type)"},{"line_number":8,"context_line":");"}],"source_content_type":"text/x-sql","patch_set":19,"id":"AAAATn%2F%2BUA4%3D","line":5,"updated":"2013-11-27 14:26:58.000000000","message":"https://www.sqlite.org/lang_keywords.html\n\ni\u0027m inclined to suggest we wrap desc in quote... just in case","commit_id":"b89664153d05c09129f29fcb9ea1e3d664cd3530"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8735e935d23e5614c8beaff5fe2f7883bcbb6209","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    t.event_id"},{"line_number":31,"context_line":"FROM trait_orig t;"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"DROP TABLE trait_orig;"}],"source_content_type":"text/x-sql","patch_set":19,"id":"AAAATn%2F%2BUAQ%3D","line":33,"updated":"2013-11-27 14:26:58.000000000","message":"drop table unique_name","commit_id":"b89664153d05c09129f29fcb9ea1e3d664cd3530"}],"ceilometer/storage/sqlalchemy/models.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3849e6d161f6e8d90adeaec6b19ad1ecbd0de51e","unresolved":false,"context_lines":[{"line_number":331,"context_line":""},{"line_number":332,"context_line":"class TraitType(Base):"},{"line_number":333,"context_line":"    \"\"\"Types of event traits. A trait type includes a description"},{"line_number":334,"context_line":"    and a data type. Uniqueness is enfroced compositely on the"},{"line_number":335,"context_line":"    data_type and desc fields. This is to accomodate cases, such as"},{"line_number":336,"context_line":"    \u0027generated\u0027, which, depending on the corresponding event,"},{"line_number":337,"context_line":"    could be a date, a boolean, or a float."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2Bewk%3D","line":334,"updated":"2013-11-26 16:06:52.000000000","message":"s/enfroced/enforced/","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"c935f628d788075f7aa0610d5e06e0e9157d95fd","unresolved":false,"context_lines":[{"line_number":331,"context_line":""},{"line_number":332,"context_line":"class TraitType(Base):"},{"line_number":333,"context_line":"    \"\"\"Types of event traits. A trait type includes a description"},{"line_number":334,"context_line":"    and a data type. Uniqueness is enfroced compositely on the"},{"line_number":335,"context_line":"    data_type and desc fields. This is to accomodate cases, such as"},{"line_number":336,"context_line":"    \u0027generated\u0027, which, depending on the corresponding event,"},{"line_number":337,"context_line":"    could be a date, a boolean, or a float."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BYLg%3D","line":334,"in_reply_to":"AAAATn%2F%2Bewk%3D","updated":"2013-11-26 18:23:43.000000000","message":"Done","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3849e6d161f6e8d90adeaec6b19ad1ecbd0de51e","unresolved":false,"context_lines":[{"line_number":332,"context_line":"class TraitType(Base):"},{"line_number":333,"context_line":"    \"\"\"Types of event traits. A trait type includes a description"},{"line_number":334,"context_line":"    and a data type. Uniqueness is enfroced compositely on the"},{"line_number":335,"context_line":"    data_type and desc fields. This is to accomodate cases, such as"},{"line_number":336,"context_line":"    \u0027generated\u0027, which, depending on the corresponding event,"},{"line_number":337,"context_line":"    could be a date, a boolean, or a float."},{"line_number":338,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BewQ%3D","line":335,"updated":"2013-11-26 16:06:52.000000000","message":"s/accomodate/accommodate/","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"c935f628d788075f7aa0610d5e06e0e9157d95fd","unresolved":false,"context_lines":[{"line_number":332,"context_line":"class TraitType(Base):"},{"line_number":333,"context_line":"    \"\"\"Types of event traits. A trait type includes a description"},{"line_number":334,"context_line":"    and a data type. Uniqueness is enfroced compositely on the"},{"line_number":335,"context_line":"    data_type and desc fields. This is to accomodate cases, such as"},{"line_number":336,"context_line":"    \u0027generated\u0027, which, depending on the corresponding event,"},{"line_number":337,"context_line":"    could be a date, a boolean, or a float."},{"line_number":338,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BYLc%3D","line":335,"in_reply_to":"AAAATn%2F%2BewQ%3D","updated":"2013-11-26 18:23:43.000000000","message":"Done","commit_id":"b7f3d741374c0d962cb1c43b5a8f3a95f847f980"}],"ceilometer/tests/storage/test_impl_sqlalchemy.py":[{"author":{"_account_id":7368,"name":"Thomas Maddox","email":"me@thomasem.net","username":"thomasm"},"change_message_id":"e853e6edfb5fdcf1a933df5aac8d291a2949a79f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # Test the method __repr__ returns a string"},{"line_number":69,"context_line":"        self.assertTrue(repr.repr(u2))"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"class MyException(Exception):"},{"line_number":73,"context_line":"    pass"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2Bwgg%3D","side":"PARENT","line":71,"updated":"2013-11-20 16:07:09.000000000","message":"These can be converted to test \u0027get_or_create_trait_type.\u0027 If we implicitly test that method in the tests below, it won\u0027t be as apparent as it once was that the UniqueName like accessors/setters are what\u0027s broken; which undermines one purpose behind unit tests - quickly assessing what\u0027s broken.","commit_id":"c84532708349bef80d23852366047f250a03cc8f"}],"tests/storage/base.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6d19fff38e010b3dfc545e497bc0987b4327fe32","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright © 2013 Intel Corp."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2B9Dw%3D","line":1,"updated":"2013-11-18 06:17:04.000000000","message":"I\u0027m a little confused about this particular file... where did it come from? It tests lots more than just what this patch changes/adds, and almost look like it was accidentally added in?","commit_id":"2f5a70283ffe771a663521652cb678066aa592d4"}]}
