)]}'
{"mistral/tests/unit/api/v2/test_environment.py":[{"author":{"_account_id":9432,"name":"Dmitri Zimine","email":"dz@stackstorm.com","username":"dzimine"},"change_message_id":"9fe93ca0404439f2da8d4294a158661839887cbf","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \u0027verbose\u0027: True,"},{"line_number":37,"context_line":"    \u0027__actions\u0027: {"},{"line_number":38,"context_line":"        \u0027std.sql\u0027: {"},{"line_number":39,"context_line":"            \u0027conn\u0027: \u0027mysql://admin:secrete@\u003c% $.host %\u003e/\u003c% $.db %\u003e\u0027"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_03ad37e8","line":39,"updated":"2015-08-13 04:06:35.000000000","message":"This is semantically different, this test tests for recursive ref to env. Should it be `$.env().host` if porting from $.__env to $.env()? w4dcoder can chime in...","commit_id":"2d88f0d2fbe103ed668bb994e541b07b3475ce65"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"4f54be5cf414d2a8ef86fa1e9d512e20086eb7ff","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \u0027verbose\u0027: True,"},{"line_number":37,"context_line":"    \u0027__actions\u0027: {"},{"line_number":38,"context_line":"        \u0027std.sql\u0027: {"},{"line_number":39,"context_line":"            \u0027conn\u0027: \u0027mysql://admin:secrete@\u003c% $.host %\u003e/\u003c% $.db %\u003e\u0027"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_61cc2e35","line":39,"in_reply_to":"1a4dcd0f_03ad37e8","updated":"2015-08-13 08:04:19.000000000","message":"ok, makes sense.","commit_id":"2d88f0d2fbe103ed668bb994e541b07b3475ce65"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"0c304a10fcc4f42ec66dfcd697a6665218d4a2c3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \u0027verbose\u0027: True,"},{"line_number":37,"context_line":"    \u0027__actions\u0027: {"},{"line_number":38,"context_line":"        \u0027std.sql\u0027: {"},{"line_number":39,"context_line":"            \u0027conn\u0027: \u0027mysql://admin:secrete@\u003c% $.host %\u003e/\u003c% $.db %\u003e\u0027"},{"line_number":40,"context_line":"        }"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_9ca3dd42","line":39,"in_reply_to":"1a4dcd0f_61cc2e35","updated":"2015-08-13 08:24:32.000000000","message":"btw, it is already tested in https://github.com/openstack/mistral/blob/master/mistral/tests/unit/test_expressions.py#L284","commit_id":"2d88f0d2fbe103ed668bb994e541b07b3475ce65"}],"mistral/tests/unit/engine/test_join.py":[{"author":{"_account_id":5558,"name":"Winson Chan","email":"wcchan@stackstorm.com","username":"winson-c-chan"},"change_message_id":"2d6fcf56cf6600e6c7926b4f76ac007085a80981","unresolved":false,"context_lines":[{"line_number":319,"context_line":"              action: std.echo"},{"line_number":320,"context_line":"              input:"},{"line_number":321,"context_line":"                output: |"},{"line_number":322,"context_line":"                  \u003c% result1 in $.keys() %\u003e,\u003c% result2 in $.keys() %\u003e,"},{"line_number":323,"context_line":"                  \u003c% result3 in $.keys() %\u003e,\u003c% result4 in $.keys() %\u003e"},{"line_number":324,"context_line":"              publish:"},{"line_number":325,"context_line":"                result5: \u003c% $.task5 %\u003e"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_498ed07a","line":322,"updated":"2015-08-13 21:17:59.000000000","message":"So we cannot treat \"$\" as a dict to evaluate if a key is in the dict?","commit_id":"736899ec6a7ca9a5fd2e42d2292d16df7fa796aa"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6fe985d3f48472ba4d6aa09c68a647f9fa005805","unresolved":false,"context_lines":[{"line_number":319,"context_line":"              action: std.echo"},{"line_number":320,"context_line":"              input:"},{"line_number":321,"context_line":"                output: |"},{"line_number":322,"context_line":"                  \u003c% result1 in $.keys() %\u003e,\u003c% result2 in $.keys() %\u003e,"},{"line_number":323,"context_line":"                  \u003c% result3 in $.keys() %\u003e,\u003c% result4 in $.keys() %\u003e"},{"line_number":324,"context_line":"              publish:"},{"line_number":325,"context_line":"                result5: \u003c% $.task5 %\u003e"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_c86087d2","line":322,"in_reply_to":"1a4dcd0f_498ed07a","updated":"2015-08-14 08:28:19.000000000","message":"do you mean using \u0027key\u0027 in $ ? If so, YAQL operator \u0027in\u0027 only works for lists and it is impossible to use \u0027key\u0027 in dict.","commit_id":"736899ec6a7ca9a5fd2e42d2292d16df7fa796aa"}],"mistral/utils/yaql_utils.py":[{"author":{"_account_id":5558,"name":"Winson Chan","email":"wcchan@stackstorm.com","username":"winson-c-chan"},"change_message_id":"2d6fcf56cf6600e6c7926b4f76ac007085a80981","unresolved":false,"context_lines":[{"line_number":43,"context_line":"# Additional convenience YAQL functions."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def env_(context):"},{"line_number":47,"context_line":"    return context[\u0027__env\u0027]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_3a0148b0","line":46,"updated":"2015-08-13 21:17:59.000000000","message":"What\u0027s with the underscore at the end def env_?","commit_id":"736899ec6a7ca9a5fd2e42d2292d16df7fa796aa"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6fe985d3f48472ba4d6aa09c68a647f9fa005805","unresolved":false,"context_lines":[{"line_number":43,"context_line":"# Additional convenience YAQL functions."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def env_(context):"},{"line_number":47,"context_line":"    return context[\u0027__env\u0027]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_a8297b8b","line":46,"in_reply_to":"1a4dcd0f_3a0148b0","updated":"2015-08-14 08:28:19.000000000","message":"if a function name ends with underscore then it doesn\u0027t need to pass the name of that function when we register it in context (see line 39). Otherwise we need to pass name explicitly (e.g. see https://github.com/openstack/mistral/blob/master/mistral/yaql_utils.py#L30-L32 )","commit_id":"736899ec6a7ca9a5fd2e42d2292d16df7fa796aa"},{"author":{"_account_id":5558,"name":"Winson Chan","email":"wcchan@stackstorm.com","username":"winson-c-chan"},"change_message_id":"0c2721becd069529e0a8b96229486510f0326dcd","unresolved":false,"context_lines":[{"line_number":43,"context_line":"# Additional convenience YAQL functions."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def env_(context):"},{"line_number":47,"context_line":"    return context[\u0027__env\u0027]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_303e1b2a","line":46,"in_reply_to":"1a4dcd0f_a8297b8b","updated":"2015-08-14 16:02:18.000000000","message":"Do you mind adding a comment here to remind developers? I assume not all is going to be familiar with YAQL internals.","commit_id":"736899ec6a7ca9a5fd2e42d2292d16df7fa796aa"},{"author":{"_account_id":5558,"name":"Winson Chan","email":"wcchan@stackstorm.com","username":"winson-c-chan"},"change_message_id":"2d6fcf56cf6600e6c7926b4f76ac007085a80981","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    return context[\u0027__env\u0027]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def execution_(context):"},{"line_number":51,"context_line":"    return context[\u0027__execution\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_fa29a03b","line":50,"updated":"2015-08-13 21:17:59.000000000","message":"What\u0027s with the underscore at the end def execution_?","commit_id":"736899ec6a7ca9a5fd2e42d2292d16df7fa796aa"}],"mistral/yaql_utils.py":[{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"58e2a21dcf2405aec0097941ac4b9f683897cf38","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def _register_functions(yaql_ctx):"},{"line_number":29,"context_line":"    yaql_ctx.register_function(_iterable_length, \u0027len\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# Additional convenience YAQL functions."}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_a172cd0f","line":29,"updated":"2015-08-10 17:22:15.000000000","message":"yaql 1.0 has len function in standard library\nhttps://github.com/stackforge/yaql/blob/master/yaql/standard_library/collections.py#L307-L311\n(and similar to dicts and strings). So you probably don\u0027t need this function anymore","commit_id":"b21996b6004e0cb1236d5e4fac0f3dcb22a4e861"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"c7827fa88b8458c649502ebb1222ba9259de06fe","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def _register_functions(yaql_ctx):"},{"line_number":29,"context_line":"    yaql_ctx.register_function(_iterable_length, \u0027len\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# Additional convenience YAQL functions."}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_4cc2c254","line":29,"in_reply_to":"1a4dcd0f_29bf3aab","updated":"2015-08-12 08:42:26.000000000","message":"ok, thanks.","commit_id":"b21996b6004e0cb1236d5e4fac0f3dcb22a4e861"},{"author":{"_account_id":7226,"name":"Stan Lagun","email":"stan.lagun@gmail.com","username":"istalker2"},"change_message_id":"29219652f0ca3a2d7c9515afbe0b0c54c57342c3","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def _register_functions(yaql_ctx):"},{"line_number":29,"context_line":"    yaql_ctx.register_function(_iterable_length, \u0027len\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# Additional convenience YAQL functions."}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_29bf3aab","line":29,"in_reply_to":"1a4dcd0f_6520504a","updated":"2015-08-11 21:00:21.000000000","message":"This was fixed in yaql 1.0 RC2 that just got released","commit_id":"b21996b6004e0cb1236d5e4fac0f3dcb22a4e861"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"175f6586962eb77816093b7031abef5422cba3eb","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def _register_functions(yaql_ctx):"},{"line_number":29,"context_line":"    yaql_ctx.register_function(_iterable_length, \u0027len\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"# Additional convenience YAQL functions."}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_6520504a","line":29,"in_reply_to":"1a4dcd0f_a172cd0f","updated":"2015-08-10 17:35:09.000000000","message":"Yes but in many cases in Mistral we used something like: \n\n  $.data.select({a \u003d\u003e $.a, b \u003d\u003e $.b}).where($.a \u003e 10).len() \n\nStandard YAQL library doesn\u0027t allow to use len() as a method, only as a function.","commit_id":"b21996b6004e0cb1236d5e4fac0f3dcb22a4e861"},{"author":{"_account_id":9432,"name":"Dmitri Zimine","email":"dz@stackstorm.com","username":"dzimine"},"change_message_id":"9fe93ca0404439f2da8d4294a158661839887cbf","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _env(context):"},{"line_number":37,"context_line":"    return context.get_data(\u0027$\u0027).get(\u0027__env\u0027, {})"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def _execution(context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_e80ee839","line":37,"updated":"2015-08-13 04:06:35.000000000","message":"Is it nessessary for YAQL 1.0 transition to change from convention variables to functions? Why? It will break in many places.","commit_id":"2d88f0d2fbe103ed668bb994e541b07b3475ce65"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"4f54be5cf414d2a8ef86fa1e9d512e20086eb7ff","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _env(context):"},{"line_number":37,"context_line":"    return context.get_data(\u0027$\u0027).get(\u0027__env\u0027, {})"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def _execution(context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_3c016905","line":37,"in_reply_to":"1a4dcd0f_e80ee839","updated":"2015-08-13 08:04:19.000000000","message":"YAQL 1.0 doesn\u0027t support keywords like \u0027__\u0027 anymore, i.e. we can\u0027t use them directly via \u0027.\u0027 (e.g. $.__env is now just wrong expression from YAQL standpoint). There are 2 ways for doing that:\n\n1. Refer to env and executions via get() method:\n\n  $.get(\u0027__env\u0027)\n\n2. Create new function env() and execution(): \n\n  env()\n\n1st option is a bit verbose, IMO.","commit_id":"2d88f0d2fbe103ed668bb994e541b07b3475ce65"}],"requirements.txt":[{"author":{"_account_id":5558,"name":"Winson Chan","email":"wcchan@stackstorm.com","username":"winson-c-chan"},"change_message_id":"63b9f54b3ca6c3b00435fdc5113f9aa784186095","unresolved":false,"context_lines":[{"line_number":37,"context_line":"SQLAlchemy\u003c1.1.0,\u003e\u003d0.9.7"},{"line_number":38,"context_line":"stevedore\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":39,"context_line":"WSME\u003e\u003d0.7"},{"line_number":40,"context_line":"yaql\u003e\u003d1.0.0  # Apache 2.0 License"},{"line_number":41,"context_line":"tooz\u003e\u003d0.16.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":6,"id":"fa1b9901_7712875a","line":40,"updated":"2015-08-21 19:20:53.000000000","message":"Can we cap the yaql version at 2.00?  i.e yaql\u003e\u003d1.0.0,\u003c2.0.0 so if yaql push 2.0 to pypi, we\u0027re not impacted until we\u0027re ready. I would suggest this for all OpenStack related requirements (i.e. oslo*).","commit_id":"5aa31a3723c0ffbdf7be1631a0d2c608c8f82432"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"defb5d823cdcc4b643c742308b8cdc8f868fb725","unresolved":false,"context_lines":[{"line_number":37,"context_line":"SQLAlchemy\u003c1.1.0,\u003e\u003d0.9.7"},{"line_number":38,"context_line":"stevedore\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":39,"context_line":"WSME\u003e\u003d0.7"},{"line_number":40,"context_line":"yaql\u003e\u003d1.0.0  # Apache 2.0 License"},{"line_number":41,"context_line":"tooz\u003e\u003d0.16.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":6,"id":"fa1b9901_2d4b37b2","line":40,"in_reply_to":"fa1b9901_7712875a","updated":"2015-08-24 06:37:21.000000000","message":"If we do this, then we will be not consistent with global-requirement again.","commit_id":"5aa31a3723c0ffbdf7be1631a0d2c608c8f82432"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"6a0ed0df9a11a41ac3061a0d97e6794a38182023","unresolved":false,"context_lines":[{"line_number":37,"context_line":"SQLAlchemy\u003c1.1.0,\u003e\u003d0.9.7"},{"line_number":38,"context_line":"stevedore\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":39,"context_line":"WSME\u003e\u003d0.7"},{"line_number":40,"context_line":"yaql\u003e\u003d1.0.0  # Apache 2.0 License"},{"line_number":41,"context_line":"tooz\u003e\u003d0.16.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":6,"id":"fa1b9901_8ab5897f","line":40,"in_reply_to":"fa1b9901_7712875a","updated":"2015-08-24 06:02:00.000000000","message":"Let\u0027s please merge this patch asap and then cap all needed versions. It prevents us from active development. YAQL 2.0.0 will not be even on horizon for a year or two.","commit_id":"5aa31a3723c0ffbdf7be1631a0d2c608c8f82432"}]}
