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

Add option to Huffman Code a string not just a file; add doctests to Huffman file #11516

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

Lecdi
Copy link

@Lecdi Lecdi commented Aug 13, 2024

Describe your change:

Previously the compression/huffman.py file provided the huffman function to Huffman Code the contents of a file and print the result.

I have added the huffman_string function (along with parse_string, which is analogous to parse_file) to Huffman Code a given string and return the result.

I have also edited the huffman function to allow the user to specify more options, such as how letter bitstrings should be separated and which file to print the result to. Calls to the huffman function with only one argument still do exactly the same thing as before.

I have also added doctests to the existing build_tree function.
EDIT: no longer doctests for existing huffman and parse_file functions

  • [✔ ] Add an algorithm?
  • Fix a bug or typo in an existing algorithm?
  • [✔ ] Add or change doctests? -- Note: Please avoid changing both code and tests in a single pull request.
  • Documentation change?
  • [ ]
    (I don't know if huffman_string counts as a new algorithm, I suppose it does)
    (I see it says avoid changing both code and tests in a single pull request, but since I was adding my own new functions with doctests, I thought it made sense to also add doctests for the existing functions)

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 include at least one URL that points to Wikipedia or another similar explanation.
  • If this pull request resolves one or more open issues then the description above includes the issue number(s) with a closing keyword: "Fixes #ISSUE-NUMBER".

…unctions as they are more memory efficient for large files; add more options to huffman function; add another doctest to huffman function
@algorithms-keeper algorithms-keeper bot added the tests are failing Do not merge until tests pass label Aug 13, 2024
@Lecdi
Copy link
Author

Lecdi commented Aug 13, 2024

It can't find the files compression/text_data/text_original.txt or compression/text_data/text_huffman.txt. I have tried with and without the compression prefix and neither works. Does anyone know what the root directory is for opening files or what path I should give?

All of the doctests are passing on my home computer...

…ork. Now existing functions parse_file and huffman still don't have doctests but all new functions, and existing function build_tree, do have doctests
@algorithms-keeper algorithms-keeper bot removed the tests are failing Do not merge until tests pass label Aug 14, 2024
@Lecdi
Copy link
Author

Lecdi commented Aug 14, 2024

OK all the tests are passing now but there are no doctests on parse_file and huffman. I couldn't get opening files in a doctest to work. Maybe someone else can add those doctests in the future.

There are still doctests on the new functions parse_string and huffman_string which were the main point of the pr anyway.

There are still new doctests on existing function build_tree which didn't have any previously.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant