Skip to content

[mypy] annotate compression #5570

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

Merged
merged 1 commit into from
Oct 26, 2021

Conversation

ErwinJunge
Copy link
Contributor

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}.

@ghost ghost added awaiting reviews This PR is ready to be reviewed enhancement This PR modified some existing files tests are failing Do not merge until tests pass labels Oct 23, 2021
@ErwinJunge ErwinJunge force-pushed the mypy-compression branch 2 times, most recently from 3e2585d to 4299195 Compare October 23, 2021 20:15
@ghost ghost removed the tests are failing Do not merge until tests pass label Oct 23, 2021
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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@ghost ghost removed the awaiting reviews This PR is ready to be reviewed label Oct 23, 2021
@@ -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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
@cclauss cclauss added the hacktoberfest-accepted Accepted to be counted towards Hacktoberfest label Oct 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement This PR modified some existing files hacktoberfest-accepted Accepted to be counted towards Hacktoberfest
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants