jihoonson opened a new pull request #9462: Open the licenses.yaml with an 
explicit encoding
URL: https://github.com/apache/druid/pull/9462
 
 
   The license check sometimes fails with the below error.
   
   ```
   distribution/bin/check-licenses.py:329: YAMLLoadWarning: calling 
yaml.load_all() without Loader=... is deprecated, as the default Loader is 
unsafe. Please read https://msg.pyyaml.org/load for full details.
     licenses_list = list(yaml.load_all(registry_file))
   Traceback (most recent call last):
     File "distribution/bin/check-licenses.py", line 417, in <module>
       check_licenses(license_yaml, dependency_reports_root)
     File "distribution/bin/check-licenses.py", line 329, in check_licenses
       licenses_list = list(yaml.load_all(registry_file))
     File "/usr/local/lib/python3.6/dist-packages/yaml/__init__.py", line 130, 
in load_all
       yield loader.get_data()
     File "/usr/local/lib/python3.6/dist-packages/yaml/constructor.py", line 
37, in get_data
       return self.construct_document(self.get_node())
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 27, 
in get_node
       return self.compose_document()
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 55, 
in compose_document
       node = self.compose_node(None, None)
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 84, 
in compose_node
       node = self.compose_mapping_node(anchor)
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 133, 
in compose_mapping_node
       item_value = self.compose_node(node, item_key)
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 82, 
in compose_node
       node = self.compose_sequence_node(anchor)
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 111, 
in compose_sequence_node
       node.value.append(self.compose_node(node, index))
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 84, 
in compose_node
       node = self.compose_mapping_node(anchor)
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 133, 
in compose_mapping_node
       item_value = self.compose_node(node, item_key)
     File "/usr/local/lib/python3.6/dist-packages/yaml/composer.py", line 64, 
in compose_node
       if self.check_event(AliasEvent):
     File "/usr/local/lib/python3.6/dist-packages/yaml/parser.py", line 98, in 
check_event
       self.current_event = self.state()
     File "/usr/local/lib/python3.6/dist-packages/yaml/parser.py", line 449, in 
parse_block_mapping_value
       if not self.check_token(KeyToken, ValueToken, BlockEndToken):
     File "/usr/local/lib/python3.6/dist-packages/yaml/scanner.py", line 116, 
in check_token
       self.fetch_more_tokens()
     File "/usr/local/lib/python3.6/dist-packages/yaml/scanner.py", line 255, 
in fetch_more_tokens
       return self.fetch_plain()
     File "/usr/local/lib/python3.6/dist-packages/yaml/scanner.py", line 679, 
in fetch_plain
       self.tokens.append(self.scan_plain())
     File "/usr/local/lib/python3.6/dist-packages/yaml/scanner.py", line 1305, 
in scan_plain
       spaces = self.scan_plain_spaces(indent, start_mark)
     File "/usr/local/lib/python3.6/dist-packages/yaml/scanner.py", line 1323, 
in scan_plain_spaces
       line_break = self.scan_line_break()
     File "/usr/local/lib/python3.6/dist-packages/yaml/scanner.py", line 1427, 
in scan_line_break
       if self.prefix(2) == '\r\n':
     File "/usr/local/lib/python3.6/dist-packages/yaml/reader.py", line 96, in 
prefix
       self.update(length)
     File "/usr/local/lib/python3.6/dist-packages/yaml/reader.py", line 153, in 
update
       self.update_raw()
     File "/usr/local/lib/python3.6/dist-packages/yaml/reader.py", line 178, in 
update_raw
       data = self.stream.read(size)
     File "/usr/lib/python3.6/encodings/ascii.py", line 26, in decode
       return codecs.ascii_decode(input, self.errors)[0]
   UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 8090: 
ordinal not in range(128)
   ```
   
   Seems like the script thought it's encoded with ascii which is actually 
encoded with utf-8. This PR changes to explicitly set the encoding method when 
it opens the file. Also passes the `Loader` type when it loads the yaml file to 
avoid the deprecation warning message 
(https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation).
   
   This PR has:
   - [x] been self-reviewed.
      - [ ] using the [concurrency 
checklist](https://github.com/apache/druid/blob/master/dev/code-review/concurrency.md)
 (Remove this item if the PR doesn't have any relation to concurrency.)
   - [ ] added documentation for new or modified features or behaviors.
   - [ ] added Javadocs for most classes and all non-trivial methods. Linked 
related entities via Javadoc links.
   - [ ] added or updated version, license, or notice information in 
[licenses.yaml](https://github.com/apache/druid/blob/master/licenses.yaml)
   - [ ] added comments explaining the "why" and the intent of the code 
wherever would not be obvious for an unfamiliar reader.
   - [ ] added unit tests or modified existing tests to cover new code paths.
   - [ ] added integration tests.
   - [ ] been tested in a test Druid cluster.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to