Search icon
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
NumPy Cookbook

You're reading from  NumPy Cookbook

Product type Book
Published in Oct 2012
Publisher Packt
ISBN-13 9781849518925
Pages 226 pages
Edition 1st Edition
Languages

Table of Contents (17) Chapters

NumPy Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
1. Winding Along with IPython 2. Advanced Indexing and Array Concepts 3. Get to Grips with Commonly Used Functions 4. Connecting NumPy with the Rest of the World 5. Audio and Image Processing 6. Special Arrays and Universal Functions 7. Profiling and Debugging 8. Quality Assurance 9. Speed Up Code with Cython 10. Fun with Scikits Index

Chapter 8. Quality Assurance

In this chapter, we will cover the following topics:

  • Installing Pyflakes

  • Performing static analysis with Pyflakes

  • Analyzing code with Pylint

  • Performing static analysis with Pychecker

  • Testing code with docstrings

  • Writing unit tests

  • Testing code with mocks

  • Testing the BDD way

Introduction


Quality assurance, contrary to popular belief, is not so much about finding bugs as it is about preventing them. We will discuss two ways to improve the code quality, thereby preventing issues. First, we will do static analysis of already existing code. Second, we will cover unit testing; this includes mocking and Behavior Driven Development (BDD).

Installing Pyflakes


Pyflakes is a Python code analysis package. It can analyze your code, and spot potential problems such as:

  • Unused imports

  • Unused variables

Getting ready

Install pip or easy_install, if necessary.

How to do it...

Choose one of the following listed options to install pyflakes:

  • Installing with pip.

    We can install pyflakes with the pip command:

    sudo pip install pyflakes
    
  • Installing with easy_install.

    We can install pyflakes with the easy_install command:

    sudo easy_install pyflakes
    
  • Installing on Linux.

    The Linux package name is pyflakes as well. For instance, on Red Hat do the following:

    sudo yum install pyflakes

    On Debian/Ubuntu, the command is:

    sudo apt-get install pyflakes
    

Performing static analysis with Pyflakes


We will perform static analysis of a part of the NumPy codebase. In order to do this, we will check out the code using Git. We will then run static analysis on part of the code using pyflakes.

How to do it...

  1. Check out the code.

    To check out the NumPy code, we will need Git. Installing Git is outside the scope of this book. The Git command to retrieve the code is as follows:

    git clone git://github.com/numpy/numpy.git numpy
    

    Alternatively, we can download a zip archive from https://github.com/numpy/numpy .

  2. Analyze the code.

    The previous step should have created a numpy directory with all the NumPy code. Go to this directory, and within it run the following command:

    $ pyflakes *.py
    pavement.py:71: redefinition of unused 'md5' from line 69
    pavement.py:88: redefinition of unused 'GIT_REVISION' from line 86
    pavement.py:314: 'virtualenv' imported but unused
    pavement.py:315: local variable 'e' is assigned to but never used
    pavement.py:380: local variable 'sdir...

Analyzing code with Pylint


Pylint is another open source static analyzer originally created by Logilab. Pylint is more complex than Pyflakes; it allows more customization. However, it is slower than Pyflakes. For more information check out http://www.logilab.org/card/pylint_manual.

In this recipe, we will again download the NumPy code from the Git repository—this step is omitted for brevity.

Getting ready

You can install Pylint from the source distribution. However, there are many dependencies, so you are better off installing with either easy_install, or pip. The installation commands are as follows:

easy_install pylint
sudo pip install pylint

How to do it...

We will again analyze from the top directory of the NumPy codebase. Please notice that we are getting much more output. In fact, Pylint prints so much text that most of it had to be cut out here:

pylint *.py
$ pylint *.py
No config file found, using default configuration
************* Module pavement
C: 60: Line too long (81/80)
C:139...
lock icon The rest of the chapter is locked
You have been reading a chapter from
NumPy Cookbook
Published in: Oct 2012 Publisher: Packt ISBN-13: 9781849518925
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime}