Skip to main content

A Great Dane turned Python environment detective

Project description

Scooby

Build Status PyPI Status

A Great Dane turned Python environment detective

This is a toolset to easily report your Python environment's package versions and hardware resources.

Install from PyPI:

pip install scooby

Jupyter Notebook Formatting

Scooby has HTML formatting for Jupyter notebooks and rich text formatting for just about every other environment. We designed this module to be lightweight such that it could easily be added as a dependency to Python projects for environment reporting when debugging. Simply add scooby to your dependencies and implement a function to have scooby report on the aspects of the environment you care most about.

If scooby is unable to detect aspects of an environment that you'd like to know, please share this with us as a feature requests or pull requests.

This work is derived from Dieter Werthmüller's work towards creating a version reporting tool for the empymod and SimPEG projects. This package has been altered to create a lightweight implementation so that it can easily be used as an environment reporting tool in any Python library with minimal impact.

Usage

Solving Mysteries

Are you struggling with the mystery of whether or not code is being executed in IPython, Jupyter, or normal Python? Try using some of Scooby's investigative functions to solve these kinds of mysteries:

import scooby

if scooby.in_ipykernel():
    # Do Jupyter stuff
elif scooby.in_ipython():
    # Do IPython stuff
else:
    # Do normal, boring Python stuff

Generating Reports

Use Scooby's investigate method to generate Report objects. These objects have representation methods implemented so that if outputted, they show a nicely formatted report but you could also capture the report as an object itself.

>>> import scooby
>>> scooby.investigate()
------------------------------------------------------
  Date: Tue Jun 25 16:17:46 2019 MDT
  Platform: Darwin-18.5.0-x86_64-i386-64bit

             12 : CPU(s)
         x86_64 : Machine
          64bit : Architecture
        32.0 GB : RAM

  3.7.3 | packaged by conda-forge | (default, Mar 27
  2019, 15:43:19)  [Clang 4.0.1
  (tags/RELEASE_401/final)]

         1.16.3 : numpy
          1.3.0 : scipy
          7.5.0 : IPython
          3.1.0 : matplotlib

  Intel(R) Math Kernel Library Version 2018.0.3
  Product Build 20180406 for Intel(R) 64
  architecture applications
------------------------------------------------------

But you can also add addtional packages too if you'd like via the addtional keyword argument:

>>> scooby.investigate(additional='pyvista')
------------------------------------------------------
  Date: Tue Jun 25 16:18:01 2019 MDT
  Platform: Darwin-18.5.0-x86_64-i386-64bit

             12 : CPU(s)
         x86_64 : Machine
          64bit : Architecture
        32.0 GB : RAM

  3.7.3 | packaged by conda-forge | (default, Mar 27
  2019, 15:43:19)  [Clang 4.0.1
  (tags/RELEASE_401/final)]

         1.16.3 : numpy
          1.3.0 : scipy
          7.5.0 : IPython
          3.1.0 : matplotlib
         0.20.4 : pyvista

  Intel(R) Math Kernel Library Version 2018.0.3
  Product Build 20180406 for Intel(R) 64
  architecture applications
------------------------------------------------------

Or maybe you want a whole bunch of additional packages:

>>> scooby.investigate(additional=['pyvista', 'vtk', 'appdirs',])
------------------------------------------------------
  Date: Tue Jun 25 16:18:16 2019 MDT
  Platform: Darwin-18.5.0-x86_64-i386-64bit

             12 : CPU(s)
         x86_64 : Machine
          64bit : Architecture
        32.0 GB : RAM

  3.7.3 | packaged by conda-forge | (default, Mar 27
  2019, 15:43:19)  [Clang 4.0.1
  (tags/RELEASE_401/final)]

         1.16.3 : numpy
          1.3.0 : scipy
          7.5.0 : IPython
          3.1.0 : matplotlib
         0.20.4 : pyvista
          8.2.0 : vtk
          1.4.3 : appdirs

  Intel(R) Math Kernel Library Version 2018.0.3
  Product Build 20180406 for Intel(R) 64
  architecture applications
------------------------------------------------------

Want to add a package to investigate but aren't sure if it is present, simply define the optional list in the arguments. Note that the default libraries of numpy, scipy, IPython, and matplotlib are defaults for optional argument, so you might want to put those in the core argument if you care about those.

>>> scooby.investigate(core=['numpy', 'matplotlib'], optional=['foo', ])
------------------------------------------------------
  Date: Tue Jun 25 17:51:30 2019 MDT
  Platform: Darwin-18.5.0-x86_64-i386-64bit

             12 : CPU(s)
         x86_64 : Machine
          64bit : Architecture
        32.0 GB : RAM

  3.7.3 | packaged by conda-forge | (default, Mar 27
  2019, 15:43:19)  [Clang 4.0.1
  (tags/RELEASE_401/final)]

         1.16.3 : numpy
          3.1.0 : matplotlib

  Intel(R) Math Kernel Library Version 2018.0.3
  Product Build 20180406 for Intel(R) 64
  architecture applications
------------------------------------------------------

Since the foo package wasn't found and it's optional, nothing is reported. But what if you need some sort of error message that a package wasn't found? Then add your package to the additional list and Scooby will let you now it was not found but like any good pooch, Scooby will complete the investigation:

>>> scooby.investigate(additional=['foo',])
------------------------------------------------------
  Date: Tue Jun 25 21:23:56 2019 MDT
  Platform: Darwin-18.5.0-x86_64-i386-64bit

             12 : CPU(s)
         x86_64 : Machine
          64bit : Architecture
        32.0 GB : RAM

  3.7.3 | packaged by conda-forge | (default, Mar 27
  2019, 15:43:19)  [Clang 4.0.1
  (tags/RELEASE_401/final)]

         1.16.3 : numpy
          1.3.0 : scipy
          7.5.0 : IPython
          3.1.0 : matplotlib

  RUH-ROH! These modules were either unavailable or
  the version attribute is unknown:

    unavailable : foo

  Intel(R) Math Kernel Library Version 2018.0.3
  Product Build 20180406 for Intel(R) 64
  architecture applications
------------------------------------------------------

Optional Requirements

The following are a list of optional requirements and their purpose:

  • psutil: report total RAM in GB
  • mkl: report Intel(R) Math Kernel Library version

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scooby-0.2.0.tar.gz (9.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page