facebookresearch / facebookresearch/nevergrad

Recurrent tasks - Good first issue

Open
#409 7 comments 0 reactions 0 assignees View on GitHub
Difficulty: Good first issue Priority: Low Type: Enhancement
Dominant language
Python
Stars
4.2k
Forks
371
PR merge metrics
No merged PRs in 30d

Description

The following are tasks that should be performed regularly and can each be good first issues for anyone willing to start playing with the codebase. Let us know here if you want to tackle one of these, and we'll be happy to help if you need it!

Many of those tasks are based on the unit tests. The latest tests run on CircleCI are visible [here](https://circleci.com/gh/facebookresearch/nevergrad/tree/master). You can click on the latest build to view one report.
Unit tests can be executed with `pytest nevergrad --durations=20 --cov=nevergrad`

On a side note, feel free to join the Facebook's [Nevergrad Users group](https://www.facebook.com/groups/nevergradusers/).

## Remove warnings in tests

Check the warnings on the `[all] Run pytest` tab of CircleCI or after running pytest yourself (see above). Removing the warnings can mean updating the code to use new methods, or just filtering them out if the warning is to be expected.

## Improve coverage

Check the coverage report at the end of the `[all] Run pytest` tab of CircleCI or after running pytest yourself (see above). Files with low coverage ratio probably need more unit tests.

## Fasten unit tests

Check the slowest unit tests at the very end of the `[all] Run pytest` tab of CircleCI or after running pytest yourself (see above). Tests which take more that 5s should be essential or have a good reason to be that slow. Consider testing the same thing differently if it can make testing faster (eg: mocking some part of the function, avoiding repetitions etc)

## Enable strict type checking

If running `mypy --implicit-reexport --strict --ignore-missing-imports nevergrad` returns errors, then we should fix them. Most of the time this means adding type hints, but sometimes this may also mean adding `# type: ignore` because it would be too complicated (and unnecessary) to do better (eg: many `numpy` functions are not typed, so we must enforce the type even though `mypy` complains). Also, some parts of the code are not type checked yet (see [mypy.ini](https://github.com/facebookresearch/nevergrad/blob/master/mypy.ini)), and could be updated.

Contributor guide

Open the contributing guide

Research direction

Start by running `pytest nevergrad --durations=20 --cov=nevergrad` and review the CircleCI `[all] Run pytest` report. Choose one focused task: remove a warning, add coverage, speed up a test taking over five seconds, or address an error from `mypy --implicit-reexport --strict --ignore-missing-imports nevergrad`. Done means the selected issue is resolved and the relevant checks pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
testing, tooling
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.