)]}'
{"doc/manpages/swift.1":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5124b4b4463f7e957f167a9e2a525160d3cbb15d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"that have changed since the last upload. The \\-\\-object\\-name \u003cobject\\-name\u003e is"},{"line_number":65,"context_line":"an option that will upload file and name object to \u003cobject\\-name\u003e or upload dir"},{"line_number":66,"context_line":"and use \u003cobject\\-name\u003e as object prefix. If the file name is \"-\", reads the"},{"line_number":67,"context_line":"content from standard input. In this case, \\-\\-object\\-name is required. The"},{"line_number":68,"context_line":"\\-S \u003csize\u003e or \\-\\-segment\\-size \u003csize\u003e and \\-\\-leave\\-segments and others are"},{"line_number":69,"context_line":"options as well (see swift upload \\-\\-help for more)."},{"line_number":70,"context_line":".RE"}],"source_content_type":"text/troff","patch_set":5,"id":"ff346bd7_df1f0459","line":67,"range":{"start_line":67,"start_character":63,"end_line":67,"end_character":71},"updated":"2017-07-26 18:46:36.000000000","message":"nit:\n\n  and no other files may be given","commit_id":"a924c91bba51e7b7cf3ba3d9a47cdd1a47b8df0e"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"a1414354fb8deddcbbbb3f70c9da91994b20aa76","unresolved":false,"context_lines":[{"line_number":64,"context_line":"that have changed since the last upload. The \\-\\-object\\-name \u003cobject\\-name\u003e is"},{"line_number":65,"context_line":"an option that will upload file and name object to \u003cobject\\-name\u003e or upload dir"},{"line_number":66,"context_line":"and use \u003cobject\\-name\u003e as object prefix. If the file name is \"-\", reads the"},{"line_number":67,"context_line":"content from standard input. In this case, \\-\\-object\\-name is required. The"},{"line_number":68,"context_line":"\\-S \u003csize\u003e or \\-\\-segment\\-size \u003csize\u003e and \\-\\-leave\\-segments and others are"},{"line_number":69,"context_line":"options as well (see swift upload \\-\\-help for more)."},{"line_number":70,"context_line":".RE"}],"source_content_type":"text/troff","patch_set":5,"id":"ff346bd7_d37ff812","line":67,"range":{"start_line":67,"start_character":63,"end_line":67,"end_character":71},"in_reply_to":"ff346bd7_df1f0459","updated":"2017-07-26 21:06:55.000000000","message":"Done","commit_id":"a924c91bba51e7b7cf3ba3d9a47cdd1a47b8df0e"}],"doc/source/cli.rst":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5124b4b4463f7e957f167a9e2a525160d3cbb15d","unresolved":false,"context_lines":[{"line_number":370,"context_line":"``--object-name \u003cobject-name\u003e`` is an option that will upload a file and"},{"line_number":371,"context_line":"name object to ``\u003cobject-name\u003e`` or upload a directory and use ``\u003cobject-name\u003e``"},{"line_number":372,"context_line":"as object prefix. If the file name is \"-\", client reads content from standard"},{"line_number":373,"context_line":"input. In this case ``--object-name`` is required to set the name of the object."},{"line_number":374,"context_line":"The ``-S \u003csize\u003e`` or ``--segment-size \u003csize\u003e`` and ``--leave-segments`` are"},{"line_number":375,"context_line":"options as well (see ``--help`` for more)."},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff346bd7_5f61d4d2","line":373,"updated":"2017-07-26 18:46:36.000000000","message":"nit:\n\n  and no other files may be given.","commit_id":"a924c91bba51e7b7cf3ba3d9a47cdd1a47b8df0e"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"a1414354fb8deddcbbbb3f70c9da91994b20aa76","unresolved":false,"context_lines":[{"line_number":370,"context_line":"``--object-name \u003cobject-name\u003e`` is an option that will upload a file and"},{"line_number":371,"context_line":"name object to ``\u003cobject-name\u003e`` or upload a directory and use ``\u003cobject-name\u003e``"},{"line_number":372,"context_line":"as object prefix. If the file name is \"-\", client reads content from standard"},{"line_number":373,"context_line":"input. In this case ``--object-name`` is required to set the name of the object."},{"line_number":374,"context_line":"The ``-S \u003csize\u003e`` or ``--segment-size \u003csize\u003e`` and ``--leave-segments`` are"},{"line_number":375,"context_line":"options as well (see ``--help`` for more)."},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff346bd7_33964441","line":373,"in_reply_to":"ff346bd7_5f61d4d2","updated":"2017-07-26 21:06:55.000000000","message":"Done","commit_id":"a924c91bba51e7b7cf3ba3d9a47cdd1a47b8df0e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5124b4b4463f7e957f167a9e2a525160d3cbb15d","unresolved":false,"context_lines":[{"line_number":374,"context_line":"The ``-S \u003csize\u003e`` or ``--segment-size \u003csize\u003e`` and ``--leave-segments`` are"},{"line_number":375,"context_line":"options as well (see ``--help`` for more)."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"Uploads specified files and directories to the given container."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"**Positional arguments:**"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff346bd7_5fbd5400","line":377,"range":{"start_line":377,"start_character":0,"end_line":377,"end_character":63},"updated":"2017-07-26 18:46:36.000000000","message":"off-topic: this seems redundnant","commit_id":"a924c91bba51e7b7cf3ba3d9a47cdd1a47b8df0e"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"a1414354fb8deddcbbbb3f70c9da91994b20aa76","unresolved":false,"context_lines":[{"line_number":374,"context_line":"The ``-S \u003csize\u003e`` or ``--segment-size \u003csize\u003e`` and ``--leave-segments`` are"},{"line_number":375,"context_line":"options as well (see ``--help`` for more)."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"Uploads specified files and directories to the given container."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"**Positional arguments:**"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff346bd7_1397c03c","line":377,"range":{"start_line":377,"start_character":0,"end_line":377,"end_character":63},"in_reply_to":"ff346bd7_5fbd5400","updated":"2017-07-26 21:06:55.000000000","message":"Done","commit_id":"a924c91bba51e7b7cf3ba3d9a47cdd1a47b8df0e"}],"swiftclient/shell.py":[{"author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"change_message_id":"b1c5116e4b851a8b7cdca497518b60002b5358c1","unresolved":false,"context_lines":[{"line_number":1066,"context_line":"                    output_manager.error(\"Local file \u0027%s\u0027 not found\" % f)"},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":"            # Now that we\u0027ve collected all the required files and dir markers"},{"line_number":1069,"context_line":"            # build the tuples for the call to upload"},{"line_number":1070,"context_line":"            if options[\u0027object_name\u0027] is not None and not from_stdin:"},{"line_number":1071,"context_line":"                objs \u003d ["},{"line_number":1072,"context_line":"                    SwiftUploadObject("}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_213fdbb4","line":1069,"updated":"2017-07-05 19:44:51.000000000","message":"It\u0027s probably worth fixing this comment. Should really be \u0027build the SwiftUploadObjects for the call to upload\u0027","commit_id":"c3afd31e18ef273a06b5841d487a75cd0a38f76a"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"d07421480d92b57b38111ef89ff3b9c29a84dc04","unresolved":false,"context_lines":[{"line_number":901,"context_line":""},{"line_number":902,"context_line":"Positional arguments:"},{"line_number":903,"context_line":"  \u003ccontainer\u003e           Name of container to upload to."},{"line_number":904,"context_line":"  \u003cfile_or_directory\u003e   Name of file or directory to upload. Specify multiple"},{"line_number":905,"context_line":"                        times for multiple uploads."},{"line_number":906,"context_line":""},{"line_number":907,"context_line":"Optional arguments:"},{"line_number":908,"context_line":"  -c, --changed         Only upload files that have changed since the last"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_2490a995","line":905,"range":{"start_line":904,"start_character":24,"end_line":905,"end_character":50},"updated":"2017-07-20 19:29:49.000000000","message":"update docs?","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"962a34697967ea6015545b1a19636dd6dd4a89fa","unresolved":false,"context_lines":[{"line_number":1003,"context_line":"    else:"},{"line_number":1004,"context_line":"        container \u003d args[0]"},{"line_number":1005,"context_line":"        files \u003d args[1:]"},{"line_number":1006,"context_line":"        from_stdin \u003d \u0027-\u0027 in files"},{"line_number":1007,"context_line":"        if from_stdin and len(files) \u003e 1:"},{"line_number":1008,"context_line":"            output_manager.error("},{"line_number":1009,"context_line":"                \u0027upload from stdin cannot be used along with other files\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_7cc2e6eb","line":1006,"updated":"2017-07-22 01:06:59.000000000","message":"So if we want to upload a file literally named \"-\" we would... change the name on disk and set --object-name?","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"7eed2c198c18bacd4fa3669c5bf44257a0bc6640","unresolved":false,"context_lines":[{"line_number":1003,"context_line":"    else:"},{"line_number":1004,"context_line":"        container \u003d args[0]"},{"line_number":1005,"context_line":"        files \u003d args[1:]"},{"line_number":1006,"context_line":"        from_stdin \u003d \u0027-\u0027 in files"},{"line_number":1007,"context_line":"        if from_stdin and len(files) \u003e 1:"},{"line_number":1008,"context_line":"            output_manager.error("},{"line_number":1009,"context_line":"                \u0027upload from stdin cannot be used along with other files\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_90ab021c","line":1006,"in_reply_to":"ff346bd7_7cc2e6eb","updated":"2017-07-24 19:15:25.000000000","message":"If you supply it as \"./-,\" it works. Have not tested on windows, though, but I\u0027d expect \".\\-\" to work too?","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"9eb8a9bb14f341919b04548b3376201306ce13af","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"            dir_markers \u003d []"},{"line_number":1059,"context_line":"            for f in files:"},{"line_number":1060,"context_line":"                if f \u003d\u003d \u0027-\u0027:"},{"line_number":1061,"context_line":"                    fd \u003d io.open(stdin.fileno(), mode\u003d\u0027rb\u0027)"},{"line_number":1062,"context_line":"                    objs.append(SwiftUploadObject("},{"line_number":1063,"context_line":"                        fd, object_name\u003doptions[\u0027object_name\u0027]))"},{"line_number":1064,"context_line":"                    # We ensure that there is exactly one \"file\" to upload in"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_c709f795","line":1061,"updated":"2017-07-20 17:33:03.000000000","message":"Works around stdin being opened in text mode by default by wrapping it with io.open and setting mode to rb.","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"962a34697967ea6015545b1a19636dd6dd4a89fa","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"            dir_markers \u003d []"},{"line_number":1059,"context_line":"            for f in files:"},{"line_number":1060,"context_line":"                if f \u003d\u003d \u0027-\u0027:"},{"line_number":1061,"context_line":"                    fd \u003d io.open(stdin.fileno(), mode\u003d\u0027rb\u0027)"},{"line_number":1062,"context_line":"                    objs.append(SwiftUploadObject("},{"line_number":1063,"context_line":"                        fd, object_name\u003doptions[\u0027object_name\u0027]))"},{"line_number":1064,"context_line":"                    # We ensure that there is exactly one \"file\" to upload in"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_1c887ac4","line":1061,"in_reply_to":"1f1a1f67_c709f795","updated":"2017-07-22 01:06:59.000000000","message":"Should we do any buffering here? We use 64k buffers when reading from disk... not sure whether that would also be appropriate for stdin...","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"7eed2c198c18bacd4fa3669c5bf44257a0bc6640","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"            dir_markers \u003d []"},{"line_number":1059,"context_line":"            for f in files:"},{"line_number":1060,"context_line":"                if f \u003d\u003d \u0027-\u0027:"},{"line_number":1061,"context_line":"                    fd \u003d io.open(stdin.fileno(), mode\u003d\u0027rb\u0027)"},{"line_number":1062,"context_line":"                    objs.append(SwiftUploadObject("},{"line_number":1063,"context_line":"                        fd, object_name\u003doptions[\u0027object_name\u0027]))"},{"line_number":1064,"context_line":"                    # We ensure that there is exactly one \"file\" to upload in"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_902e62a3","line":1061,"in_reply_to":"ff346bd7_1c887ac4","updated":"2017-07-24 19:15:25.000000000","message":"Not sure either, as we don\u0027t know where the stream comes from. We could expose a further tuning option to set the buffer size or explore this in a follow-on patch?","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"}],"tests/unit/test_shell.py":[{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"9521c4c7dc0aeb5e44bcc3b370a5490627d1bfe5","unresolved":false,"context_lines":[{"line_number":914,"context_line":"        # This is a little convoluted: we want to examine the first call ([0]),"},{"line_number":915,"context_line":"        # the argv list([1]), the second parameter ([1]), and the first"},{"line_number":916,"context_line":"        # element.  This is because the upload method takes a container and a"},{"line_number":917,"context_line":"        # list of SwiftUploadObjects."},{"line_number":918,"context_line":"        swift_upload_obj \u003d upload_mock.mock_calls[0][1][1][0]"},{"line_number":919,"context_line":"        self.assertEqual(sys.stdin.fileno(), swift_upload_obj.source.fileno())"},{"line_number":920,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_5b7dd61a","line":917,"updated":"2017-07-24 03:38:25.000000000","message":"+1 for the comment","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"962a34697967ea6015545b1a19636dd6dd4a89fa","unresolved":false,"context_lines":[{"line_number":916,"context_line":"        # element.  This is because the upload method takes a container and a"},{"line_number":917,"context_line":"        # list of SwiftUploadObjects."},{"line_number":918,"context_line":"        swift_upload_obj \u003d upload_mock.mock_calls[0][1][1][0]"},{"line_number":919,"context_line":"        self.assertEqual(sys.stdin.fileno(), swift_upload_obj.source.fileno())"},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"    @mock.patch(\u0027swiftclient.service.SwiftService.upload\u0027)"},{"line_number":922,"context_line":"    def test_upload_from_stdin_no_name(self, upload_mock):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_9c190a8a","line":919,"updated":"2017-07-22 01:06:59.000000000","message":"Maybe also make assertions about swift_upload_obj.source.mode?","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"},{"author":{"_account_id":17363,"name":"Timur Alperovich","email":"timur@timuralp.com","username":"timuralp"},"change_message_id":"7eed2c198c18bacd4fa3669c5bf44257a0bc6640","unresolved":false,"context_lines":[{"line_number":916,"context_line":"        # element.  This is because the upload method takes a container and a"},{"line_number":917,"context_line":"        # list of SwiftUploadObjects."},{"line_number":918,"context_line":"        swift_upload_obj \u003d upload_mock.mock_calls[0][1][1][0]"},{"line_number":919,"context_line":"        self.assertEqual(sys.stdin.fileno(), swift_upload_obj.source.fileno())"},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"    @mock.patch(\u0027swiftclient.service.SwiftService.upload\u0027)"},{"line_number":922,"context_line":"    def test_upload_from_stdin_no_name(self, upload_mock):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_b00a8623","line":919,"in_reply_to":"ff346bd7_9c190a8a","updated":"2017-07-24 19:15:25.000000000","message":"Done","commit_id":"976951b7e7d5879b5421ae8cf34120792569cefe"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5124b4b4463f7e957f167a9e2a525160d3cbb15d","unresolved":false,"context_lines":[{"line_number":922,"context_line":"        # This is a little convoluted: we want to examine the first call ([0]),"},{"line_number":923,"context_line":"        # the argv list([1]), the second parameter ([1]), and the first"},{"line_number":924,"context_line":"        # element.  This is because the upload method takes a container and a"},{"line_number":925,"context_line":"        # list of SwiftUploadObjects."},{"line_number":926,"context_line":"        swift_upload_obj \u003d upload_mock.mock_calls[0][1][1][0]"},{"line_number":927,"context_line":"        self.assertEqual(sys.stdin.fileno(), swift_upload_obj.source.fileno())"},{"line_number":928,"context_line":"        io_open_mock.assert_called_once_with(sys.stdin.fileno(), mode\u003d\u0027rb\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff346bd7_02bf6fb0","line":925,"updated":"2017-07-26 18:46:36.000000000","message":"thanks for the comment!","commit_id":"a924c91bba51e7b7cf3ba3d9a47cdd1a47b8df0e"}]}
