As Google Summer of Code (GSoC) is coming to an end, I am writing this blog post as a final summary describing all the work I have done as well as my experiences in this program.

During this PR, I found an import bug in Nuitka and hotfixed it with #487 Fixup_import_module .

This also addressed the case of a package with both a main package and a main module, in which case both are included inside the resulting wheel.

Checks are added for the bdist_nuitka command to see if a main package exists. If there is not a main package, it will set its compile target to the main module instead.

This bug occurs due to Nuitka making the assumption that a main package always exists for all packages. However, some packages contain only a main module and not a main package.

At the end, a colored summary is given for all the packages tested.

The above process is repeated for each suitable PyPI package from the PyPI top 50. (Some packages are left out if they do not contain a test suite or if they do not need to be tested)

If no differences are found, this means bdist_nuitka worked properly. Else Nuitka compilation did something wrong.

This compiled wheel is then installed into the virtualenv , after which subprocess.Popen is used to run and capture the output of python -m pytest --disable-warnings into another string.

The script then resets the package to its original state and builds a nuitka-compiled wheel using python setup.py bdist_nuitka .

This wheel is then installed into the virtualenv , after which subprocess.Popen is used to run and capture the output of python -m pytest --disable-warnings into a string.

The script then handles each package depending on different needs before building a regular wheel with python setup.py bdist_wheel .

The script then uses calls to os.system to automate the creation of a virtualenv which is then used to install pytest and pip install the package's requirements (if any) for running pytest.

The script first uses git to update each package if it is already existing in the local cache, else it will git clone that package into the local cache.

After familiarizing myself with how virtualenv , wheel , and pytest work, I started to work on a script which would automate the pytest comparison for top PyPI packages.

Over the course of performing manual testing, I became familiar with the use of virtualenv , wheel , and pytest .

If the pytests pass/fail in the same way, that means Nuitka built the wheel properly.

Manual testing compares the pytest results of an installed nuitka wheel built using python setup.py bdist_nuitka to the regular pytest results of each package.

Standalone test Boto3Using.py was created using moto to mock AWS calls which did not turn out well.

This pull request was soon merged and allowed me the lucky opportunity of GSoC 2019 with Nuitka :)

This function checks for special-comments at the top of standalone tests in the format of # nuitka-skip-unless-expression: expression to be evaluated OR # nuitka-skip-unless-imports: module1,module2,... and will decide whether to skip a test depending on if its specified requirements are met.

Before GSoC started, I looked around for whatever work I could help with.

Things I Learned

Before GSoC, I was very uncomfortable with working inside a terminal. I was unfamiliar with many basic bash commands because I simply did not have any prior professional industrial experiences. I was also very unfamiliar with the Git flow, which is evident in the messy commit histories of my earliest pull requests.

As I continued throughout my GSoC journey, however, I became much more comfortable with working inside the terminal as well as using git as a version-control system (shoutout to my mentor Kay Hayen for helping me through all the annoying conflicts).

Although I am still no expert, I can confidently say that I am now far more proficient working with git and inside the terminal.

In addition, I became much more familiar with many of the most popular PyPI packages as well as the inner workings of python , which I believe will help me go very far in my career as a software developer.

Overall, the GSoC experience was truly astounding and I am more than thankful to my mentor Kay Hayen as well as Google for making this amazing program possible.

Yours, Tommy