GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Support for R / renv as a language by lorenzwalthert · Pull Request #1799 · pre-commit/pre-commit

Conversation

@lorenzwalthert

@lorenzwalthert lorenzwalthert commented Feb 15, 2021 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

This PR aims to add 2nd level support for R to pre-commit via the virtual environment manager renv, motivated by isolated dependency management and (hopefully) compatibility with pre-commit.ci for 2nd level languages as outlined in lorenzwalthert/precommit#215. The implementation follows the recently contributed support for conda (#1232) for source code and tests as well as the implementation of the python virtualenv language.

Further considerations:

  • Initial tests only run on Linux. I have to add other platforms as we go if this PR is generally approved.
  • I'd appreciate feedback to the questions in the source code comments, in particular on whether or not to remove in_env() as it seems not needed or whether it should be kept for consistency with other languages. Also, let me know if you want certain comments that explain stuff to be removed. Was not sure how much.
  • If this gets through, we probably should add documentation for pre-commit.com.
  • We might want to support file types for R (https://pre-commit.com/#filtering-files-with-types).

Before this PR, I was not familiar with the pre-commit code base nor a very avid python user, hence sorry if there are obvious flaws in this PR.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

rkm and llrs reacted with rocket emoji
All reactions
  • 🚀 2 reactions
@lorenzwalthert
lorenzwalthert marked this pull request as draft February 15, 2021 17:34
@lorenzwalthert
lorenzwalthert force-pushed the renv branch from 322e98a to 0816a4f Compare February 15, 2021 17:36
lorenzwalthert
lorenzwalthert commented Feb 15, 2021
View reviewed changes
Comment thread testing/get-renv.sh
# Alternatively, we require the renv
# package to be installed already, then we can
# omit that.
Rscript -e 'dir.create(Sys.getenv("R_LIBS_USER"), recursive = TRUE)'

@lorenzwalthert lorenzwalthert Feb 15, 2021 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This won't work if a non-root user has never installed any R package (quite unlikely at that stage but...). Maybe catch the installation error and fail (more) informatively?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@lorenzwalthert
lorenzwalthert force-pushed the renv branch 4 times, most recently from ca4a52b to a72bde1 Compare February 16, 2021 00:08
asottile
asottile reviewed Feb 16, 2021
View reviewed changes
Comment thread pre_commit/languages/renv.py Outdated
# expose entry to the user for maximal control
return helpers.run_xargs(
hook, hook.cmd, file_args,
color=color, cwd=hook.prefix.prefix_dir,

@asottile asottile Feb 16, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the current expectation for hook authors is that hooks will be executed from the root of the repository, so cwd=... won't be workable here

I think that necessarily changes how the environment setup is working now -- the ~normalish way of setting this up is by pointing some set of environment variables at the ENVIRONMENT_DIR (and subdirs)

note also that things must be installed entirely inside the ENVIRONMENT_DIR or they potentially won't be persisted by caching

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@lorenzwalthert lorenzwalthert Feb 23, 2021 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the current expectation for hook authors is that hooks will be executed from the root of the repository, so cwd=... won't be workable here.

of course 🤦.

the ~normalish way of setting this up is by pointing some set of environment variables at the ENVIRONMENT_DIR (and subdirs).

That's what I saw. Problem is (and that's a peculiarity of R) the most operations happen in an R session, not the terminal session. renv can only be activated properly from inside R. For that reason, my current suggestion is to place a renv::activate() call in a file, then point the R_PROFILE_USER environment variable to that file so the code will run at R startup. The idea is now to allow two versions, inline code expressions and file in entry::

Rscript -e expr # like Rscript -e "1+1" 
Rscript path/to/file 

An inject the options --no-save, --no-restore, --no-site-file and --no-environ after Rscript (to basically have --vanilla start, but run this one renv::activate() statement) and expand the path/to/file similar to language: script since we have to run the hooks in the working directory of the repo. The files and the hook args are then passed after the above, i.e.

Rscript --no-save --no-restore --no-site-file --no-environ /abs/path/ [files] [hook args]
Rscript --no-save --no-restore --no-site-file --no-environ -e expr [files] [hook args]

note also that things must be installed entirely inside the ENVIRONMENT_DIR or they potentially won't be persisted by caching.

This should be solved now. Just placing the whole env in a subdirectory now.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@lorenzwalthert
lorenzwalthert force-pushed the renv branch from 9c88fa7 to f960b87 Compare February 23, 2021 14:02
@lorenzwalthert
lorenzwalthert marked this pull request as ready for review February 23, 2021 18:09
lorenzwalthert
lorenzwalthert commented Feb 23, 2021
View reviewed changes
Comment thread testing/resources/renv_hooks_repo/DESCRIPTION
@@ -0,0 +1,18 @@
Package: gli.clu

@lorenzwalthert lorenzwalthert Feb 23, 2021

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The DESCRIPTION file is basically the equivalent of setup.py, renv.lock is the equivalent of the conda environment.yml. Not sure if one or both should be listed in LOCAL_RESOURCES as this was introduced here:
https://github.com/pre-commit/pre-commit/pull/1232/files#diff-a52ef0cf627ce783529c259e63d4ea82b77520936a2455cbf4f90ad2fb36d27dR176

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah LOCAL_RESOURCES is to allow an additional_dependencies-only repo: local hook -- it seems like additional_dependencies is supported for R so we should probably make an empty one?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@lorenzwalthert lorenzwalthert Feb 28, 2021

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, thanks for the explanation. I added a template for renv.lock in cf88089. However, there is an R version hard-coded in it which will get outdated. As far as I can tell from a quick experiment, the docs and issues in https://github.com/rstudio/renv, there is no indication that the R version recorded in the lock file will be used at renv::restore(), which we use in renv.install_environment(). Even removing seems fine (I left it there anyways). But that might still be a bit brittle.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@lorenzwalthert lorenzwalthert Feb 28, 2021

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, should we add a unit test for a local hook with additional dependencies to check if things work as expected? I don't think that's currently covered.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@asottile asottile Mar 2, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah it would probably be good to have one unit test demoing a local hook via additional_dependencies

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
lorenzwalthert
lorenzwalthert commented Feb 23, 2021
View reviewed changes
Comment thread tests/repository_test.py Outdated
test_run_a_node_hook(tempdir_factory, store)


def _test_renv_parsing(

@lorenzwalthert lorenzwalthert Feb 23, 2021

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let me know if these are too many tests (because it slows down testing). I think we can get 100% coverage with fewer tests too (but then not cover as many combinations).

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@lorenzwalthert
lorenzwalthert requested a review from asottile February 27, 2021 12:45
asottile
asottile reviewed Feb 27, 2021
View reviewed changes

@asottile asottile left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overall looks great, really happy you took this on and I'm excited to add this support!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with hooray emoji
All reactions
  • 🎉 1 reaction
Comment thread pre_commit/languages/all.py Outdated
from pre_commit.languages import perl
from pre_commit.languages import pygrep
from pre_commit.languages import python
from pre_commit.languages import renv

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should maybe just be called r?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@lorenzwalthert lorenzwalthert Feb 28, 2021

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thought about that also. The thing is that language: conda can both host R and Python hooks and renv can manage python dependencies, so I thought I go for a more specific name. On the other hand, language: python uses venv (and is still called python, not venv). Since working with virtual environments is still not as common in R compared to Python and not every R user knows renv, using r as a name might also make it easier for people to find what they are looking for. So I am happy to switch to r, please let me know what you prefer.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@asottile asottile Mar 2, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah I think r makes the most sense, conda is kinda the special case right now and I think if people google "pre-commit r" they'll be much more likely to hit this than if it were named renv

we can always add other names if new ways of installing isolated r environments happen in the future and/or shuffle them around (there used to be a python_venv language which was merged into python as virtualenv makes venv-style environments anyway nowadays)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread pre_commit/languages/renv.py Outdated
with in_env(hook.prefix, hook.language_version):

return helpers.run_xargs(
hook, cmd_from_hook(hook), file_args, color=color,

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I usually prefer to read a file from the bottom upwards -- also helper functions that live only in this module should be underscore-prefixed to make it more clear what is/isn't part of the api (the api specification is in the languages/all.py file)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@lorenzwalthert lorenzwalthert Feb 28, 2021 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I can adapt the order. I can also prefix the helper functions not part of the API. But why is in_env and get_env_patch not prefixed in other modules although not listed in languages/all.py?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@asottile asottile Mar 2, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmmmm yeah good point, those should probably be underscore-prefixed everywhere -- probably just legacy and copy paste 😅

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread pre_commit/languages/renv.py Outdated
# TODO what if expr is x;2? not captured by shlex.split()
"""
if entry[0] != 'Rscript':
raise SyntaxError('entry must start with `Rscript`.')

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SyntaxError is for python syntax being incorrect -- these should be ValueError probably

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread pre_commit/languages/renv.py Outdated
' '.join([
'The only valid syntax is `Rscript -e {expr}`',
'or `Rscript path/to/hook/script`',
]),

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this can be written as an implicitly joined string:

raise TypeError(
    'first line here '
    'second line here'
)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread pre_commit/languages/renv.py Outdated
]),
)

None

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this line does nothing and can be removed, note that python implicitly returns None for "void" functions and doesn't support implicit-return-without-return-keyword

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread testing/resources/renv_hooks_repo/DESCRIPTION
@@ -0,0 +1,18 @@
Package: gli.clu

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah LOCAL_RESOURCES is to allow an additional_dependencies-only repo: local hook -- it seems like additional_dependencies is supported for R so we should probably make an empty one?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread tests/repository_test.py Outdated
from pre_commit.languages import helpers
from pre_commit.languages import node
from pre_commit.languages import python
from pre_commit.languages import renv

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the tests specifically for the renv helper functions should live in tests/languages/renv_test.py (or r_test.py after renaming)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread tests/repository_test.py Outdated


def test_renv_parsing_expr_non_Rscirpt(tempdir_factory, store):

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(throughout the review, nbd I can fix this myself later -- I don't put blank lines at the beginning or the ending of blocks)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread tests/repository_test.py Outdated

def test_renv_parsing_expr_non_Rscirpt(tempdir_factory, store):

with pytest.raises(SyntaxError, match='entry must start with'):

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really don't like the match= arg and prefer to test the exact error message, you can follow this pattern:

with pytest.raises(TypeHere) as excinfo:
    ...
msg, = excinfo.value.args
assert msg == ...

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
Comment thread tests/repository_test.py Outdated


@xfailif_windows # pragma: win32 no cover
@ xfailif_windows # pragma: win32 no cover

@asottile asottile Feb 27, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

decorators shouldn't have spaces after them -- not sure what happened here

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@lorenzwalthert lorenzwalthert Feb 28, 2021

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also wondered, but one of the pre-commit hook changed it, maybe autopep? I even rebased my PR master and tried to get rid of this. Can revert but then not sure if the pre-commit.ci passes.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@asottile asottile Mar 2, 2021

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah my guess is there was a syntax error earlier in the file and then autopep8 freaked -- I've been meaning to fix that in autopep8 but it's tricky (basically sometimes it will try and rewrite a file even if it has a syntax error 😱)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

lorenzwalthert reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
@lorenzwalthert
lorenzwalthert force-pushed the renv branch 3 times, most recently from e07dfae to 809c79e Compare March 5, 2021 10:10
@lorenzwalthert lorenzwalthert mentioned this pull request Mar 5, 2021
Can 'docopt' be installed when this package is installed? lorenzwalthert/precommit#88
Closed
asottile
asottile approved these changes Mar 7, 2021
View reviewed changes

@asottile asottile left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@lorenzwalthert @asottile
add support for R via renv
f150211
@asottile
asottile force-pushed the renv branch from 809c79e to f150211 Compare March 7, 2021 21:59
@asottile
asottile merged commit 19bffaa into pre-commit:master Mar 7, 2021
@asottile

asottile commented Mar 7, 2021

Copy link
Copy Markdown
Member

added a stub for this in the docs -- pre-commit/pre-commit.com#473

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Mar 8, 2021
Bump pre-commit from 2.7.1 to 2.11.0 GamePad64/hassio_wb_discovery#26
Closed
Bump pre-commit from 2.9.3 to 2.11.0 in /.github/workflows staticdev/cookiecutter-hypermodern-python#79
Closed
Bump pre-commit from 2.10.1 to 2.11.0 g-ongenae/litterature-mashup-bot#63
Closed
Bump pre-commit from 2.10.0 to 2.11.0 thermondo/stanley#818
Merged
Bump pre-commit from 2.10.1 to 2.11.0 staticdev/irpf-cei#378
Merged
Bump pre-commit from 2.10.1 to 2.11.0 natlas/natlas#686
Merged
Bump pre-commit from 2.7.1 to 2.11.0 in /bot emilfars/code-review#135
Closed
This was referenced Mar 15, 2021
build(deps-dev): bump pre-commit from 2.10.0 to 2.11.1 in /bot marco-c/code-review#145
Closed
Bump pre-commit from 2.9.2 to 2.11.1 marco-c/mozci#61
Closed
Bump pre-commit from 2.10.1 to 2.11.1 rollandf/assisted-test-infra#56
Closed
Bump pre-commit from 2.10.1 to 2.11.1 yevgeny-shnaidman/assisted-test-infra#54
Closed
Bump pre-commit from 2.10.1 to 2.11.1 Jorgen1040/jassa-bot#35
Merged
Bump pre-commit from 2.10.1 to 2.11.1 frangiz/worktimer#17
Merged
Bump pre-commit from 2.9.2 to 2.11.1 ravisumit33/Mysterio#90
Closed
Bump pre-commit from 2.9.2 to 2.11.1 bgrins/bugbug#157
Closed
Bump pre-commit from 2.9.3 to 2.11.1 sacharya/assisted-test-infra#26
Closed
Bump pre-commit from 2.10.1 to 2.11.1 ConnectionMaster/bugbug#82
Closed
Bump pre-commit from 2.7.1 to 2.11.1 eranco74/assisted-test-infra#13
Closed
Bump pre-commit from 2.9.2 to 2.11.1 oshercc/assisted-test-infra#25
Closed
Bump pre-commit from 2.10.1 to 2.11.1 dmyersturnbull/typed-dfs#17
Closed
chore: bump pre-commit from 2.9.3 to 2.11.1 mvs-develop/dev.dna.works#14
Closed
Bump pre-commit from 2.10.0 to 2.11.1 jparrill/assisted-test-infra#23
Closed
Bump pre-commit from 2.9.3 to 2.11.1 rlopez133/assisted-test-infra#15
Closed
Bump pre-commit from 2.9.3 to 2.11.1 dmyersturnbull/suretime#15
Closed
Bump pre-commit from 2.9.3 to 2.11.1 materialsproject/reaction-network#16
Closed
Bump pre-commit from 2.10.0 to 2.11.1 marco-c/relman-auto-nag#16
Closed
Bump pre-commit from 2.10.1 to 2.11.1 frangiz/picorg#5
Merged
build(deps-dev): bump pre-commit from 2.10.1 to 2.11.1 lyz-code/mkdocs-newsletter#7
Closed
Bump pre-commit from 2.9.3 to 2.11.1 hacf-fr/meteofrance-api#163
Merged
Bump pre-commit from 2.9.3 to 2.11.1 jmmshn/api#59
Closed
Bump pre-commit from 2.10.1 to 2.11.1 hacf-fr/renault-api#224
Merged
Bump pre-commit from 2.6.0 to 2.11.1 trussworks/circleci-docker-primary#185
Closed
Bump pre-commit from 2.10.1 to 2.11.1 trussworks/docker-circleci#15
Merged
Bump pre-commit from 2.8.2 to 2.11.1 janaSunrise/HypixelIO#10
Merged
Bump pre-commit from 2.8.2 to 2.11.1 hacf-fr/synologydsm-api#22
Merged
Bump pre-commit from 2.10.0 to 2.11.1 splunk/security_content#1258
Merged
@lorenzwalthert
lorenzwalthert deleted the renv branch September 5, 2021 12:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@asottile asottile asottile approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@lorenzwalthert @asottile
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.