Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Easy to use test framework for Jupyter Notebooks.
pip install treon
Treon will execute notebook from top to bottom and the test fails if any code cell returns an error. Additionally, one can write unittest & doctest to test specific behaviour (examples shown below).
$ treon
Executing treon version 0.1.4
Recursively scanning /workspace/treon/tmp/docs/site/ru/guide for Notebooks...
-----------------------------------------------------------------------
Collected following Notebooks for testing
-----------------------------------------------------------------------
/workspace/treon/tmp/docs/site/ru/guide/keras.ipynb
/workspace/treon/tmp/docs/site/ru/guide/eager.ipynb
-----------------------------------------------------------------------
Triggered test for /workspace/treon/tmp/docs/site/ru/guide/keras.ipynb
Triggered test for /workspace/treon/tmp/docs/site/ru/guide/eager.ipynb
test_sum (__main__.TestNotebook) ...
ok
test_sum (__main__.TestNotebook2) ...
ok
test_sum (__main__.TestNotebook3) ...
ok
----------------------------------------------------------------------
Ran 3 tests in 0.004s
OK
-----------------------------------------------------------------------
TEST RESULT
-----------------------------------------------------------------------
/workspace/treon/tmp/docs/site/ru/guide/keras.ipynb -- PASSED
/workspace/treon/tmp/docs/site/ru/guide/eager.ipynb -- PASSED
-----------------------------------------------------------------------
2 succeeded, 0 failed, out of 2 notebooks tested.
-----------------------------------------------------------------------
Usage:
treon
treon [PATH] [--threads=<number>] [-v] [--exclude=<string>]...
Arguments:
PATH File or directory path to find notebooks to test. Searches recursively for directory paths. [default: current working directory]
Options:
--threads=<number> Number of parallel threads. Each thread processes one notebook file at a time. [default: 10]
-e=<string> --exclude=<string> Option for excluding files or entire directories from testing. All files whose
absolute path starts with the specified string are excluded from testing. This option can be
specified more than once to exclude multiple files or directories. If the exclude path is
a valid directory name, only this directory is excluded.
-v --verbose Print detailed output for debugging.
-h --help Show this screen.
--version Show version.
You just need to add tests as shown below & treon would execute them and report the result on the console. See this for more details on how to write unittest.
You just need to add tests as shown below & treon would execute them and report the result on the console. See this for more details on how to write doctest.
For development, you may use below to create a Python interpreter that resides in venv
in the current working directory, and to install all of treon's dependencies:
$ virtualenv venv
$ source venv/bin/activate
$ pip install -e .
$ pip install -r requirements-dev.txt
$ treon --help # should work
Because the script installs the package as editable, you can make changes in the source tree and use the treon
command to immediately validate them. If this does not appear to work, check that you are using a the proper virtual environment, and that the package is indeed installed in editable mode:
$ which treon # should point into your virtualenv
/path/to/my/venv/bin/treon
$ pip list --local | grep treon # should point to the source tree
treon 0.1.4 /workspace/treon
Please refer to the Makefile
for supplementary development tasks.
In particular, the following targets may be relevant when validating changes before committing:
$ make lint # check treon's source for code style errors
$ make test # run all tests
Our aim at ReviewNB is to make notebooks a first class entity in the production workflow. We've built a code review system for Notebooks. The next step is to build a CI pipeline & treon is the core tool in that effort. It is licensed liberally (MIT) & I foresee it being used as an independent tool as well. You can use it locally and/or integrate with CI system of your choice.
For motivation, checkout Netflix's blog to see how notebooks are graduating from scratchpad to a part of production workflow.
If you see any problem, open an issue or send a pull request. You can write to team@reviewnb.com for any questions.
FAQs
Testing framework for Jupyter Notebooks
We found that treon demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.