)]}'
{"specs/policy/external-library-requirements.rst":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"b0b4e3ccf10dd80cf412877c2e708c9af72e788e","unresolved":false,"context_lines":[{"line_number":8,"context_line":"conventions on where/how to specify dependencies. A typical Oslo "},{"line_number":9,"context_line":"library has at least two files for specifying requirements namely "},{"line_number":10,"context_line":"requirements.txt and test-requirements.txt. In addition, the libraries "},{"line_number":11,"context_line":"that do support Python 3.x will have an additional requirements-py3.txt."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Problem Description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba7be1f8_3be9cfb8","line":11,"updated":"2015-02-23 21:31:21.000000000","message":"We only need those version-specific files where the requirements for different versions of python are different.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"f451a25207ba28792e2d95e1808488abdd6643b1","unresolved":false,"context_lines":[{"line_number":8,"context_line":"conventions on where/how to specify dependencies. A typical Oslo "},{"line_number":9,"context_line":"library has at least two files for specifying requirements namely "},{"line_number":10,"context_line":"requirements.txt and test-requirements.txt. In addition, the libraries "},{"line_number":11,"context_line":"that do support Python 3.x will have an additional requirements-py3.txt."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Problem Description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a80dd14_5de49b3b","line":11,"in_reply_to":"ba7be1f8_3be9cfb8","updated":"2015-03-12 19:40:00.000000000","message":"Also note that having a different file means we can\u0027t use universal wheels. So we should push back quite hard on their use. Things like argparse are not worth making version-specific.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0343def7fead96f7e1fcfef71aef28c7981f2d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Problem Description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Code in an Oslo library can and do depend on external libraries. We need"},{"line_number":17,"context_line":"to figure out a way to keep dependencies pulled in by an application "},{"line_number":18,"context_line":"that wants to depend on our Oslo library to a minimum."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da9b358b_89181886","line":16,"updated":"2015-03-30 14:48:17.000000000","message":"change \"do\" to \"does\"","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0343def7fead96f7e1fcfef71aef28c7981f2d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"* Optional Drivers"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Mandatory is the main code base, if the code in here depends on an "},{"line_number":30,"context_line":"external library, then the library should be requirements.txt with an"},{"line_number":31,"context_line":"appropriate version range."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Tests are by design are not importable by another application. so"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da9b358b_a903dc0e","line":30,"updated":"2015-03-30 14:48:17.000000000","message":"change \"be requirements.txt\" to \"be in requirements.txt\"","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"07dbc88786fe8bb65c989860367aa3d904ab5ee3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"external library, then the library should be requirements.txt with an"},{"line_number":31,"context_line":"appropriate version range."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Tests are by design are not importable by another application. so"},{"line_number":34,"context_line":"any external libraries that the tests need other than the ones in"},{"line_number":35,"context_line":"requirements.txt should go into test-requirements.txt"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba7be1f8_e7fcdc74","line":33,"updated":"2015-02-24 14:20:38.000000000","message":"-\u003e Tests are by design not importable","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":7102,"name":"Thomas Bechtold","email":"thomas.bechtold@chainguard.dev","username":"toabctl"},"change_message_id":"c5c1db1b54cc6614f12fb1b444802c100d9d0725","unresolved":false,"context_lines":[{"line_number":31,"context_line":"appropriate version range."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Tests are by design are not importable by another application. so"},{"line_number":34,"context_line":"any external libraries that the tests need other than the ones in"},{"line_number":35,"context_line":"requirements.txt should go into test-requirements.txt"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Optional Drivers include code that is only enabled by say some"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a80dd14_d4ccb4bd","line":34,"updated":"2015-03-13 17:13:47.000000000","message":"s/libraries/library/","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0343def7fead96f7e1fcfef71aef28c7981f2d","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Tests are by design are not importable by another application. so"},{"line_number":34,"context_line":"any external libraries that the tests need other than the ones in"},{"line_number":35,"context_line":"requirements.txt should go into test-requirements.txt"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Optional Drivers include code that is only enabled by say some"},{"line_number":38,"context_line":"configuration parameters etc. A lot of times Tests exercise the code"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da9b358b_3c094c2d","line":35,"updated":"2015-03-30 14:48:17.000000000","message":"add . at end of sentence.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"f451a25207ba28792e2d95e1808488abdd6643b1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"requirements.txt should go into test-requirements.txt"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Optional Drivers include code that is only enabled by say some"},{"line_number":38,"context_line":"configuration parameters etc. A lot of times Tests exercise the code"},{"line_number":39,"context_line":"in the drivers, but we also need to balance that with trying to keep"},{"line_number":40,"context_line":"the requirements.txt lean. So external libraries required by the"},{"line_number":41,"context_line":"optional drivers to test the functionality should be added to the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a80dd14_7db87f11","line":38,"updated":"2015-03-12 19:40:00.000000000","message":"Tests -\u003e tests (nit)","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0343def7fead96f7e1fcfef71aef28c7981f2d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"configuration parameters etc. A lot of times Tests exercise the code"},{"line_number":39,"context_line":"in the drivers, but we also need to balance that with trying to keep"},{"line_number":40,"context_line":"the requirements.txt lean. So external libraries required by the"},{"line_number":41,"context_line":"optional drivers to test the functionality should be added to the"},{"line_number":42,"context_line":"test-requirements.txt."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Complicated example - Say an Oslo library provides some specific"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da9b358b_bc4b1c59","line":41,"updated":"2015-03-30 14:48:17.000000000","message":"change \"to the test-requirements.txt\" to \"to test-requirements.txt\"","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"07dbc88786fe8bb65c989860367aa3d904ab5ee3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"in the drivers, but we also need to balance that with trying to keep"},{"line_number":40,"context_line":"the requirements.txt lean. So external libraries required by the"},{"line_number":41,"context_line":"optional drivers to test the functionality should be added to the"},{"line_number":42,"context_line":"test-requirements.txt."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Complicated example - Say an Oslo library provides some specific"},{"line_number":45,"context_line":"functionality (say Versioned Objects) and wants to provide some"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba7be1f8_67e38ca4","line":42,"updated":"2015-02-24 14:20:38.000000000","message":"Should we add that the library should gracefully fail with a helpful message in the case it\u0027s missing a runtime dep for an optional driver (when such optional driver is enabled ?)","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0343def7fead96f7e1fcfef71aef28c7981f2d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"in the drivers, but we also need to balance that with trying to keep"},{"line_number":40,"context_line":"the requirements.txt lean. So external libraries required by the"},{"line_number":41,"context_line":"optional drivers to test the functionality should be added to the"},{"line_number":42,"context_line":"test-requirements.txt."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Complicated example - Say an Oslo library provides some specific"},{"line_number":45,"context_line":"functionality (say Versioned Objects) and wants to provide some"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da9b358b_7c4d9471","line":42,"updated":"2015-03-30 14:48:17.000000000","message":"one alternative is to fake the external dependency rather than actually have to load it.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"f451a25207ba28792e2d95e1808488abdd6643b1","unresolved":false,"context_lines":[{"line_number":39,"context_line":"in the drivers, but we also need to balance that with trying to keep"},{"line_number":40,"context_line":"the requirements.txt lean. So external libraries required by the"},{"line_number":41,"context_line":"optional drivers to test the functionality should be added to the"},{"line_number":42,"context_line":"test-requirements.txt."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Complicated example - Say an Oslo library provides some specific"},{"line_number":45,"context_line":"functionality (say Versioned Objects) and wants to provide some"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a80dd14_9d2d3349","line":42,"in_reply_to":"ba7be1f8_67e38ca4","updated":"2015-03-12 19:40:00.000000000","message":"Please no - that may well just result in death by a thousand cuts keeping track of exactly where the import may be triggered or the error that may happen. I think keeping it barebones is fine as long as we do document somewhere that driver X needs modules [Y, Z\u003e\u003dN]","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"9f89c02d3e2b764f79bae7f0afbf2d0bedc3c365","unresolved":false,"context_lines":[{"line_number":39,"context_line":"in the drivers, but we also need to balance that with trying to keep"},{"line_number":40,"context_line":"the requirements.txt lean. So external libraries required by the"},{"line_number":41,"context_line":"optional drivers to test the functionality should be added to the"},{"line_number":42,"context_line":"test-requirements.txt."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Complicated example - Say an Oslo library provides some specific"},{"line_number":45,"context_line":"functionality (say Versioned Objects) and wants to provide some"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da9b358b_154c1b41","line":42,"in_reply_to":"da9b358b_7c4d9471","updated":"2015-03-30 15:50:37.000000000","message":"+1 to that; although that requires active and supported fakes that are not sort of hackily maintained; which is not always easy to find... (I work on one of the more functional fakes for the kazoo library[1] and I haven\u0027t seen tons of similar kind of faking libraries)\n\n[1] https://pypi.python.org/pypi/zake","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"f451a25207ba28792e2d95e1808488abdd6643b1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"testing capabilities for that functionality (say Fixtures). Since"},{"line_number":47,"context_line":"the modules that contain the fixtures is for public consumption,"},{"line_number":48,"context_line":"the external libraries (say fixtures, mock) should be listed in"},{"line_number":49,"context_line":"requirements.txt. "},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives \u0026 History"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a80dd14_7d707f40","line":49,"updated":"2015-03-12 19:40:00.000000000","message":"I can appreciate the intent here but I don\u0027t think it makes sense. The upstream pip definition of requirements is \u0027build dependencies\u0027 - those things needed to be able to run setup.py install on a target machine. All other dependencies are intended to be left up to the consumer of the package. So unless fixtures is required to run setup.py install, we shouldn\u0027t list it in this example. I realise this is arguably overly minimal, and there are setuptools things for different profiles where you can ask for the needed deps for feature X - e.g. pip install oslo.versioned_objects[test] and then in the versioned_objects setup you list extra_requires\u003d{\u0027test\u0027:[\"fixtures\"}\n\nI\u0027m not sure if we\u0027ve exposed that in the pbr setup.cfg glue, but if we haven\u0027t it should be straight forward to add, and allows the best of both worlds:\n - we can encapsulate dependencies so that the thing that needs them knows what it needs\n - we can keep the minimum set of dependencies truely minimum\n - we can introspect what sets of dependencies are available.\n\nI\u0027m not sure if we can use multiple extras offhand, but thats fixable I suspect if it doesn\u0027t work.\n\nFrom a testing perspective I think it would be desirable to be confident that such optional imports are truely optional so I think we probably want a few scenarios for each library:\n - start with just pip installed and install the library w/no optional deps. Must install and then be importable (\u0027import libraryname\u0027)\n - for each profile:\n  - start with just pip installed and install the library[profilename] and then be importable for both \u0027import libraryname\u0027 and \u0027import somethingthatneededtheextradeps\u0027\n\nAnd perhaps:\n - for each combination of profiles - all combinations - do the same.\n\nThis is able to be data driven as long as for each profile we have a small bit of metadata - the import that should work. e.g. nova.virt.libvirt.\n\nWe\u0027ll need to be aware of https://github.com/pypa/pip/issues/1236 and probably get onto fixing it, but I think its reasonably shallow having poked around in there before.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"fb2557fb2008af917f38db27d1dcd21e906bf43c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"the modules that contain the fixtures is for public consumption,"},{"line_number":48,"context_line":"the external libraries (say fixtures, mock) should be listed in"},{"line_number":49,"context_line":"requirements.txt. "},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives \u0026 History"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da86d52c_8c879060","line":50,"updated":"2015-02-18 20:27:45.000000000","message":"Or make a \u0027oslo.versioned_objects.fixtures\u0027 library that just has the fixtures? That fixtures library depends on \u0027oslo.versioned_objects\u0027 (of course).","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4beaf7ce64da91ded24a8cc62b4976d003b4eb46","unresolved":false,"context_lines":[{"line_number":47,"context_line":"the modules that contain the fixtures is for public consumption,"},{"line_number":48,"context_line":"the external libraries (say fixtures, mock) should be listed in"},{"line_number":49,"context_line":"requirements.txt. "},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives \u0026 History"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a80dd14_665c59ee","line":50,"in_reply_to":"9a80dd14_26f18102","updated":"2015-03-06 19:49:29.000000000","message":"Here is an example:\n\nhttps://review.openstack.org/#/c/162276/","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"95249b0fce0a8d7593177e9305d3667c0eb9ab63","unresolved":false,"context_lines":[{"line_number":47,"context_line":"the modules that contain the fixtures is for public consumption,"},{"line_number":48,"context_line":"the external libraries (say fixtures, mock) should be listed in"},{"line_number":49,"context_line":"requirements.txt. "},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives \u0026 History"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a80dd14_c69185f2","line":50,"in_reply_to":"9a80dd14_26f18102","updated":"2015-03-06 20:03:58.000000000","message":"To elaborate: We do not want to immediately double the number of libraries we are managing in Oslo. If we decide adding requirements for test fixtures to requirements.txt is the wrong approach, then we should just document them and ensure that none of our production code ever imports anything that needs them by isolating that code into a fixtures package.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d86be5e7f653c4856e1b9772a41f9b3b78c94c66","unresolved":false,"context_lines":[{"line_number":47,"context_line":"the modules that contain the fixtures is for public consumption,"},{"line_number":48,"context_line":"the external libraries (say fixtures, mock) should be listed in"},{"line_number":49,"context_line":"requirements.txt. "},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Alternatives \u0026 History"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a80dd14_26f18102","line":50,"in_reply_to":"da86d52c_8c879060","updated":"2015-03-06 19:46:22.000000000","message":"This is another alternative, and we should document it, but I don\u0027t think we should use it.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"b0b4e3ccf10dd80cf412877c2e708c9af72e788e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"Alternatives \u0026 History"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"N/A"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Implementation"},{"line_number":57,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba7be1f8_db02730a","line":54,"updated":"2015-02-23 21:31:21.000000000","message":"An alternative for the test dependencies is to document them and assume that they will be provided by the test configuration of the code using the fixtures.\n\nAn alternative for the optional dependencies is to always include all of them in requirements.txt.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5a0343def7fead96f7e1fcfef71aef28c7981f2d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"Alternatives \u0026 History"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"N/A"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Implementation"},{"line_number":57,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da9b358b_3c7cac71","line":54,"in_reply_to":"ba7be1f8_db02730a","updated":"2015-03-30 14:48:17.000000000","message":"As mentioned earlier, an alternative is to fake dependencies for tests so that the real library doesn\u0027t have to be loaded.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"a7cc6d6198367bdf1564f4d2529c8a6192730122","unresolved":false,"context_lines":[{"line_number":76,"context_line":"References"},{"line_number":77,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"N/A"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":".. _move out of the \"oslo\" namespace package: https://blueprints.launchpad.net/oslo-incubator/+spec/drop-namespace-packages"},{"line_number":82,"context_line":".. _negatively impact the ability to land patches elsewhere: https://etherpad.openstack.org/p/juno-infra-library-testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba7be1f8_064f526c","line":79,"updated":"2015-02-23 21:32:59.000000000","message":"We should link to https://review.openstack.org/#/c/153966/ as a related spec.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"740363a4c56c18dc3c341147bb74b34def20d89a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"References"},{"line_number":77,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"N/A"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":".. _move out of the \"oslo\" namespace package: https://blueprints.launchpad.net/oslo-incubator/+spec/drop-namespace-packages"},{"line_number":82,"context_line":".. _negatively impact the ability to land patches elsewhere: https://etherpad.openstack.org/p/juno-infra-library-testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba7be1f8_f37650a3","line":79,"in_reply_to":"ba7be1f8_064f526c","updated":"2015-02-24 18:10:44.000000000","message":"I would even go so far as to say that question needs to be resolved before this one.  Basically our optional deps policy needs to match the one from that spec.","commit_id":"8391b08a7f3a7f8f4f4675bb4bb5119e73b4141f"}]}
