Weekly Blog Post #4 [June 28, 2021]

Published: 06/29/2021

What did you do this week?

  • I worked on two issues this week:
    1. Adding Operations for Archives and Compression
    2. Commit Linting Issue
  • I removed options parameter from and updated definitions for existing zip operations as per the feedback from my mentor. [1,2]
  • Other than that I cleaned up and also optimized some code here and there. [1,2,3,4,5,6 & 7]
  • Starting with Point 1, I implemented operations for creating and inflation of tar archives, also implemented their respective test cases.
  • The test for extract_tar_archive was especially a bit too tricky, writing it correctly took a considerable amount of time (more on that later).
  • Also added compression operations to support .gz, .bz2 & .xz formats with their respective test cases.
  • Moving on to Point 2, I implemented one of the five parts of enhancement issue related to it, i.e. added support for commits related to tests by implementing a body mutation.
  • I also optimized the code to avoid multiple calls to _get_all_exts(), by making a class attribute for it's output.
  • Last but not the least, I updated test cases to make sure that the linting support for tests related body mutation is working correctly.

What is coming up next?

  • Updating the Model base class to support archive storage using these operations would be my top priority for the coming week.
  • Obviously this would break a considerable number of models and would also call for implementation of new test cases and a number of small tweaks.
  • Other than that I would continue to work on the commit linting issue as per the enhancement checklist.

Did you get stuck anywhere?

  • Yes, while implementing the test case for extract_tar_archive, I ran into a lot of issues, mostly consisting of problems of faulty patching and problems regarding getting the right mock calls in place. However, I was able to solve the problem successfully after investing almost a complete day in it.
  • Deciding on how to implement the compression algorithms, also took some time, I wasn't really stuck on it, but it took some tome and discussion with my mentors to come to a conclusion.
  • Initially I thought I would give a compression option with the archive operations itself but as per the feedback from my mentor I wasn't supposed to implement options for now.
  • Also, binding the compression with archiving operations would not have been the best thing to do, implementing compression as an operation itself was the best way which I and both of my mentors agreed as it is comparatively more modular and flexible approach at solving this issue.
  • I still have not been able to resolve the MacOS related CI error in the commit linting issue, I would be discussing that with my mentor in the upcoming weekly sync.