-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Convert two strings to bytestrings #53
Merged
williballenthin
merged 2 commits into
williballenthin:master
from
sldouglas-nist:strings_to_bytestrings
Jul 25, 2023
Merged
Convert two strings to bytestrings #53
williballenthin
merged 2 commits into
williballenthin:master
from
sldouglas-nist:strings_to_bytestrings
Jul 25, 2023
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The patch converts two strings to `bytes` in `get_file_info.py`. The regular expression, `reg` in `ascii_strings` of `get_file_info.py` is looking through `buf`, which was previously annotated as `bytes`, meaning that `reg` needs to be `bytes`. Note the following example with inlined comments. `t` substitutes for `reg`, `exp` for `ascii_re`, and `test` for `buf` ``` # String buffer and string regex >>> import re >>> t = "t" >>> test = "test" >>> exp = re.compile(t) >>> for match in exp.finditer(test): ... print(match) ... <re.Match object; span=(0, 1), match='t'> <re.Match object; span=(3, 4), match='t'> # Current code state >>> test = b"test" >>> for match in reg.finditer(test): ... print(match) ... Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot use a string pattern on a bytes-like object # Modified code state >>> test = b"test" >>> t = b"t" >>> exp = re.compile(t) >>> for match in exp.finditer(test): ... print(match) ... <re.Match object; span=(0, 1), match=b't'> <re.Match object; span=(3, 4), match=b't'> ``` The patch is written to pass mypy static type review when tested with the following: ```bash mypy list_mft.py MFTINDX.py ``` References: * https://docs.python.org/3/library/re.html#re.finditer Disclaimer: Participation by NIST in the creation of the documentation of mentioned software is not intended to imply a recommendation or endorsement by the National Institute of Standards and Technology, nor is it intended to imply that any specific software is necessarily the best available for the purpose. Licensing: Portions of this patch contributed by NIST are governed by the NIST Software Licensing Statement: NIST-developed software is provided by NIST as a public service. You may use, copy, and distribute copies of the software in any medium, provided that you keep intact this entire notice. You may improve, modify, and create derivative works of the software or any portion of the software, and you may copy and distribute such modifications or works. Modified works should carry a notice stating that you changed the software and should note the date and nature of any such change. Please explicitly acknowledge the National Institute of Standards and Technology as the source of the software. NIST-developed software is expressly provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT, OR ARISING BY OPERATION OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND DATA ACCURACY. NIST NEITHER REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE OR THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, RELIABILITY, OR USEFULNESS OF THE SOFTWARE. You are solely responsible for determining the appropriateness of using and distributing the software and you assume all risks associated with its use, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and the unavailability or interruption of operation. This software is not intended to be used in any situation where a failure could cause risk of injury or damage to property. The software developed by NIST employees is not subject to copyright protection within the United States. Reviewed-by: Alex Nelson <[email protected]> Signed-off-by: Sheldon Douglas <[email protected]>
sldouglas-nist
changed the title
Convert two strings to bytestings
Convert two strings to bytestrings
Jul 25, 2023
williballenthin
approved these changes
Jul 25, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks great, thank you!
This PR's branch is caught up and ready for merge when possible. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The patch converts two strings to
bytes
inget_file_info.py
. The regular expression,reg
inascii_strings
ofget_file_info.py
is looking throughbuf
, which was previously annotated asbytes
, meaning thatreg
needs to bebytes
. Note the following example with inlined comments.t
substitutes forreg
,exp
forascii_re
, andtest
forbuf
The patch is written to pass mypy static type review when tested with the following:
References: