Skip to content
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

[mypy] annotate compression #5570

Merged
merged 1 commit into from Oct 26, 2021
Merged

Conversation

Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

3 participants
@ErwinJunge
Copy link
Contributor

@ErwinJunge ErwinJunge commented Oct 23, 2021

Describe your change:

Fixed missing type annotation for compression directory. It now passes mypy --strict.

Related to #4052

  • Add an algorithm?
  • Fix a bug or typo in an existing algorithm?
  • Documentation change?

Checklist:

  • I have read CONTRIBUTING.md.
  • This pull request is all my own work -- I have not plagiarized.
  • I know that pull requests will not be merged if they fail the automated tests.
  • This PR only changes one algorithm file. To ease review, please open separate PRs for separate algorithms.
  • All new Python files are placed inside an existing directory.
  • All filenames are in all lowercase characters with no spaces or dashes.
  • All functions and variable names follow Python naming conventions.
  • All function parameters and return values are annotated with Python type hints.
  • All functions have doctests that pass the automated testing.
  • All new algorithms have a URL in its comments that points to Wikipedia or other similar explanation.
  • If this pull request resolves one or more open issues then the commit message contains Fixes: #{$ISSUE_NO}.
self.bitstring = {}
def __init__(self, letter: str, freq: int):
self.letter: str = letter
self.freq: int = freq
Copy link
Member

@cclauss cclauss Oct 23, 2021

Are Python and mypy smart enough to know the data types being assigned on lines 8 and 9? Even without the type hint, won’t mypy still complain if I later try to assign 1 to self.letter or “A” to self.freq?

Copy link
Member

@tjgurwara99 tjgurwara99 Oct 23, 2021

I think you are being rhetoric here 😅 but I thought I should add my two cents but tbh I would like to know the answer as well 😂 From my limited knowledge of using python, Mypy would still complain but I think the main use of type hints that I have found is when language servers used in IDE's help the programmer to look at the function signature/definition and not make any mistakes. For example, when you're writing something in VSCode and use a package it gives you an autocomplete suggestion which also contains the information for the type expected in a particular argument. This immediately makes the programmer aware that they are making a mistake because language servers raise a warning squiggly lines whereas the type hint inside the def doesn't (I think). If I'm wrong, let me know as well 😂 I would also like to know whether language servers would be able raise a flag when type hint is only provided in the definition and not the signature of the function.

Copy link
Member

@cclauss cclauss Oct 26, 2021

You and I agree with each other. The most helpful use of type hints is in function parameters and return types.

@@ -75,10 +82,11 @@ def bwt_transform(s: str) -> dict:
rotations = all_rotations(s)
rotations.sort() # sort the list of rotations in alphabetically order
# make a string composed of the last char of each rotation
return {
response: BWTTransformDict = {
Copy link
Member

@cclauss cclauss Oct 23, 2021

Does this change run counter to flake8 return error R504? https://github.com/afonasev/flake8-return#errors

@cclauss cclauss merged commit e49d8e3 into TheAlgorithms:master Oct 26, 2021
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment