Closed roboneuro closed 10 months ago
Hello humans, I'm @roboneuro, a robot that can help you with some common editorial tasks.
For a list of things I can do to help you, just type:
@roboneuro commands
For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:
@roboneuro generate pdf
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):
OK DOIs
- None
MISSING DOIs
- None
INVALID DOIs
- https://doi.org/10.1002/mrm.22497 is INVALID because of 'https://doi.org/' prefix
Software report:
github.com/AlDanial/cloc v 1.88 T=0.01 s (491.3 files/s, 189721.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Jupyter Notebook 1 0 1100 1280
Markdown 2 17 0 227
YAML 3 10 17 38
TeX 1 0 0 14
-------------------------------------------------------------------------------
SUM: 7 27 1117 1559
-------------------------------------------------------------------------------
gitinspector failed to run statistical information for the repository
Wordcount for paper.md
is 1880
Failed to discover a valid open source license
:warning: An error happened when generating the pdf.
Error in the pdf requires change:
/home/runner/work/_actions/neurolibre/paper-action/main/vendor/bundle/ruby/3.2.0/gems/neurolibre-1.5.4/lib/theoj/paper.rb:158:in `failure': Problem with ORCID (https://orcid.org/0000-0001-6798-0857) for Chenyang Wang. ORCID looks to be the wrong length (Theoj::Error)
@mathieuboudreau can you please edit ORCID IDs so that they are not URLs?
- name: Chenyang Wang
orcid: https://orcid.org/0000-0001-6798-0857
- name: Ziwei Zhao
orcid: https://orcid.org/0000-0003-0281-1141
looks like there is a similar problem in the DOI of the reference @mathieuboudreau
@roboneuro generate book
I'm sorry human, I don't understand that. You can see what commands I support by typing:
@roboneuro commands
@roboneuro build book
⚪ Book Build (Preview)
Status: Assigned to task 06b0a730
Last updated: 2023-06-07 07:12:03 PDT
@pbellec this will trigger the book build as a background task, but will not post status at regular intervals yet because I need to move generator function (that connects to the binderhub buildstream) to the context of the background task. Mostly note for myself and heads up for you.
ok, will I get a notification when the book finishes building, or do we need access to the servers to check the logs at this stage?
IIRC this one requires a different book build command as @mathieuboudreau noted before, not the common one due to formatting. I think the following may be related to that:
root file /home/jovyan/content/paper.rst not found
Book build is not reaching the notebook execution step. Full log below. Book_build log
Running Jupyter-Book v0.13.0
Source Folder: /home/jovyan/content
Config Path: /home/jovyan/content/_config.yml
Output Path: /mnt/books/rrsg2020/github.com/paper/7e799ee79ab846345919e5ad2e7cbd75fb654a1c/_build/html
Running Sphinx v4.5.0
Adding copy buttons to code blocks...
Adding copy buttons to code blocks...
making output directory... done
[etoc] Changing master_doc to 'paper'
[etoc] Excluded 1 extra file(s) not in toc
myst v0.15.2: MdParserConfig(renderer='sphinx', commonmark_only=False, enable_extensions=['colon_fence', 'dollarmath', 'linkify', 'substitution', 'tasklist'], dmath_allow_labels=True, dmath_allow_space=True, dmath_allow_digits=True, dmath_double_inline=False, update_mathjax=True, mathjax_classes='tex2jax_process|mathjax_process|math|output_area', disable_syntax=[], url_schemes=['mailto', 'http', 'https'], heading_anchors=None, heading_slug_func=None, html_meta=[], footnote_transition=True, substitutions=[], sub_delimiters=['{', '}'], words_per_minute=200)
MyST-NB: Excluded Paths: set()
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 0 source files that are out of date
updating environment: MyST-NB: Potential docnames to execute: []
executing outdated notebooks... done
[new config] 0 added, 0 changed, 0 removed
Sphinx error:
root file /home/jovyan/content/paper.rst not found
Traceback (most recent call last):
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/jupyter_book/sphinx.py", line 167, in build_sphinx
app.build(force_all, filenames)
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/sphinx/application.py", line 330, in build
self.builder.build_update()
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 288, in build_update
len(to_build))
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 300, in build
updated_docnames = set(self.read())
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/sphinx/builders/__init__.py", line 411, in read
self.env.doc2path(self.config.root_doc))
sphinx.errors.SphinxError: root file /home/jovyan/content/paper.rst not found
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/srv/conda/envs/notebook/bin/jupyter-book", line 8, in <module>
sys.exit(main())
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/jupyter_book/cli/main.py", line 324, in build
result, builder, OUTPUT_PATH, build_type, PAGE_NAME, click.echo
File "/srv/conda/envs/notebook/lib/python3.7/site-packages/jupyter_book/cli/main.py", line 531, in builder_specific_actions
raise RuntimeError(_message_box(msg, color="red", doprint=False)) from result
RuntimeError:
===============================================================================
There was an error in building your book. Look above for the cause.
===============================================================================
Jupyter-book exit code: 1
Jupyter-book build failed!
@mathieuboudreau can you remind me the Jupyter Book build command this submission needs and explain what/why additional arguments do to generalize it for the API?
@agahkarakuzu this is the line I've been using: https://github.com/rrsg2020/paper/blob/7e799ee79ab846345919e5ad2e7cbd75fb654a1c/.github/workflows/main.yml#L33
I had compare this suggested way by Jupyter Book for single pages, vs simply indicating single-page in the config file. If I recall, the issue with setting it in the config file (and using the default build command) is that it added a table of content on one of the sidebars, which I didn't want. I could double check though!
@mathieuboudreau I know the data for this one is coming from https://github.com/rrsg2020/analysis and data is localized thereafter, but as we cache data and archive it, this dynamic approach will not work.
For data dependencies, we need a data_requirement.json
file to be present in the binder
folder, such as:
{
"src": "10.5281/zenodo.####", #or any other repo2data compatible source
"dst": "../../data",
"projectName": "rrsg-2020"
}
Then, for example, the data should be accessible at ../../data/rrsg-2020
from a notebook that is in the content
directory.
You can get this programatically:
from repo2data.repo2data import Repo2Data
import os
data_req_path = os.path.join("..","..", "binder", "data_requirement.json")
repo2data = Repo2Data(data_req_path)
data_path = repo2data.install()[0]
That's why repo2data should be included in the binder/requirements.txt
. I also noticed that there's a requirements.txt at the root of the repo, is that leftover?
For the other issue, I will need to enhance our book build endpoint to pass custom build arguments to the binderhub cluster.
Thanks for providing the resources!
For the data, does it need to be the original resource (eg all the different OSF files), or could I just run the notebook as is right now, and package all the data that gets downloaded and used into a new osf repo, just to package this as a one-off so that you can also package it as a one off to save the state
Even a public drive link would work, as long as the data needed bu this notebook provided.
If the structure and content of the zenodo doi'd repository matches this one, we can just download the whole thing.
Otherwise, not using zenodo would be a good idea as we'll need to archive it.
@agahkarakuzu I've updated my repo to adhere to the data requirements, added a postBuild command to clone my analysis repo for the tools needed in my book, and removed the duplicate requirements file. Let me know if it looks good to continue with the submission review!
@mathieuboudreau thank you!
Can you push a content/_neurolibre.yml
file that has the following content:
book_layout: traditional
single_page: index.ipynb
@roboneuro commands
Hello @agahkarakuzu, here are the things you can ask me to do:
# List all available commands
@roboneuro commands
# Add to this issue's reviewers list
@roboneuro add @username as reviewer
# Remove from this issue's reviewers list
@roboneuro remove @username from reviewers
# Get a list of all editors's GitHub handles
@roboneuro list editors
# Assign a user as the editor of this submission
@roboneuro assign @username as editor
# Remove the editor assigned to this submission
@roboneuro remove editor
# Remind an author, a reviewer or the editor to return to a review after a
# certain period of time (supported units days and weeks)
@roboneuro remind @reviewer in 2 weeks
# Check the references of the PDF for missing DOIs
@roboneuro check references
# Perform checks on the repository
@roboneuro check repository
# Adds a checklist for the reviewer using this command
@roboneuro generate my checklist
# Set a value for version
@roboneuro set v1.0.0 as version
# Set a value for branch
@roboneuro set neurolibre-paper as branch
# Set a value for repository
@roboneuro set https://github.com/organization/repo as repository
# Set a value for the archive DOI
@roboneuro set set 10.5281/zenodo.6861996 as archive
# Set a value for the (data/book/repository/docker) archive DOI.
@roboneuro set 10.5281/zenodo.6861996 as data archive
# Set executable book URI for the preprint.
@roboneuro set book uri
# Mention the EiCs for the correct track
@roboneuro ping track-eic
# Reject paper
@roboneuro reject
# Withdraw paper
@roboneuro withdraw
# Invite an editor to edit a submission (sending them an email)
@roboneuro invite @(.*) as editor
# Generates the pdf paper
@roboneuro generate pdf
# Recommends the submission for acceptance
@roboneuro recommend-accept
# Accept and publish the paper
@roboneuro accept
# Update data on an accepted/published paper
@roboneuro reaccept
# Generates a LaTeX preprint file
@roboneuro generate preprint
# Flag submission with questionable scope
@roboneuro query scope
# Get a link to the complete list of reviewers
@roboneuro list reviewers
# Creates a post-review checklist with editor and authors tasks
@roboneuro create post-review checklist
# Open the review issue
@roboneuro start review
# Check the status of the NeuroLibre preview server.
@roboneuro preview server status
# Check the status of the NeuroLibre preprint (production) server.
@roboneuro preprint server status
# Build a NeuroLibre reproducible preprint for technical screening.
@roboneuro build book
# After screening, build book from the forked reository.
@roboneuro production build book
# Transfer data from preview to the preprint (production) server.
@roboneuro production sync data
# Transfer the final preprint (forked repo) to the preprint (production) server (DOI URL).
@roboneuro production sync book
# Start the production process by forking repository and configuring it.
@roboneuro production start
# Creates Zenodo deposits (a.k.a buckets) for archiving reproducibility assets.
@roboneuro zenodo create buckets
# Status check for the archival of the reproducibility assets.
@roboneuro zenodo status
# Copy summary PDF from the preprints repository to the NeuroLibre production server.
@roboneuro production sync pdf
# Upload the latest Jupyter Book to Zenodo for archival.
@roboneuro zenodo upload book
# Upload the latest version of the book repository to Zenodo for archival.
@roboneuro zenodo upload repository
# Upload the latest version of the docker image to Zenodo for archival.
@roboneuro zenodo upload docker
# Publish reproducibility assets on Zenodo. Sets DOIs if successful.
@roboneuro zenodo publish
@roboneuro preview server status
🟢 NeuroLibre server is active (running).
🍀 Ready to accept requests from Issue #14
🔗 URL: https://preview.neurolibre.org
@roboneuro build book
🟠 Book Build (Preview)(Update interval: 2 mins)
Status: In progress 97381e02
Last updated: 2023-07-05 15:27:04 PDT
Running for: $https://test.conp.cloud/build/gh/rrsg2020/paper.git/40e8cd85b77f256c1b9fbb8f45cf384d007aeb12
The book build is partially successful here, but it appears in a different folder structure than what NeuroLibre expects, to be dealt with at the API level:
Interactive figures are missing.
---------------------------------------------------------------------------
PermissionError Traceback (most recent call last)
<ipython-input-2-18d689cda767> in <module>
23 # download data
24 repo2data = Repo2Data(data_req_path)
---> 25 data_path = repo2data.install()
26
27 # Imports
/srv/conda/envs/notebook/lib/python3.7/site-packages/repo2data/repo2data.py in install(self)
103 else:
104 ret += [Repo2DataChild(self._data_requirement_file,
--> 105 self._use_server, self._data_requirement_path).install()]
106
107 return ret
/srv/conda/envs/notebook/lib/python3.7/site-packages/repo2data/repo2data.py in install(self)
331 if not self._already_downloaded():
332 if not os.path.exists(self._dst_path):
--> 333 os.makedirs(self._dst_path)
334 # Downloading with the right method, depending on the src type
335 self._scan_dl_type()
/srv/conda/envs/notebook/lib/python3.7/os.py in makedirs(name, mode, exist_ok)
211 if head and tail and not path.exists(head):
212 try:
--> 213 makedirs(head, exist_ok=exist_ok)
214 except FileExistsError:
215 # Defeats race condition when another thread created the path
/srv/conda/envs/notebook/lib/python3.7/os.py in makedirs(name, mode, exist_ok)
221 return
222 try:
--> 223 mkdir(name, mode)
224 except OSError:
225 # Cannot rely on checking for EEXIST, since the operating system
PermissionError: [Errno 13] Permission denied: '../../data'
PermissionError: [Errno 13] Permission denied: '../../data'
@mathieuboudreau
if os.path.isdir(Path('../../data')):
data_path = ['../../data/rrsg-2020-neurolibre']
else:
# define data requirement path
data_req_path = os.path.join(Path("../binder/data_requirement.json"))
# download data
repo2data = Repo2Data(data_req_path)
data_path = repo2data.install()
Can you use the following pattern
-data_req_path = os.path.join(Path("../binder/data_requirement.json"))
+data_req_path = os.path.join("..", "binder", "data_requirement.json")
repo2data = Repo2Data(data_req_path)
-data_path = repo2data.install()
+data_path = repo2data.install()[0]
The binder
folder is ../binder
relative to the content/index.ipynb
.
I also realized that data_requirements.json
should be:
{
"src": "https://github.com/rrsg2020/paper/releases/download/v1.0.0/rrsg-2020-neurolibre.zip",
"dst": "../data",
"projectName": "rrsg-2020-neurolibre"
}
In previous examples ../../data
was working because the notebooks were under content/some_folder/notebook
.
Sorry for the confusion!
@roboneuro build book
🟠 **Book Build (Preview) | Update interval: 2m** |
---|
Status: In progress 1d2137fb
Last updated: 2023-07-05 16:32:42 PDT
Running for: https://test.conp.cloud/build/gh/rrsg2020/paper.git/461f0931ef41f10a3d2400f6819c38098fff2fd4
@roboneuro build book
🔴 Binder build has failed 🥀
Status: Failed efa2638e
Last updated: 2023-07-05 17:02:11 PDT
The next comment will forward the logs
@roboneuro build book
🔴 Binder build has failed 🥀
Status: Failed 39708154
Last updated: 2023-07-05 18:12:33 PDT
The next comment will forward the logs
@roboneuro build book
🔴 Binder build has failed 🥀
Status: Failed 5dcc47fb
Last updated: 2023-07-05 18:26:55 PDT
The next comment will forward the logs
@roboneuro build book
🔴 Binder build has failed 🥀
Status: Failed 98c0aa02
Last updated: 2023-07-05 18:39:43 PDT
The next comment will forward the logs
@roboneuro build book
🔴 Binder build has failed 🥀
Status: Failed 26ff654e
Last updated: 2023-07-05 18:49:20 PDT
The next comment will forward the logs
@roboneuro build book
🔴 Binder build has failed 🥀
Status: Failed 55e4f1bf
Last updated: 2023-07-06 13:24:28 PDT
The next comment will forward the logs
🥀 We ran into a problem building your book. Please see the log files below.
W
a
i
t
i
n
g
f
o
r
b
u
i
l
d
t
o
s
t
a
r
t
.
.
.
P
i
c
k
e
d
G
i
t
c
o
n
t
e
n
t
p
r
o
v
i
d
e
r
.
C
l
o
n
i
n
g
i
n
t
o
'
/
t
m
p
/
r
e
p
o
2
d
o
c
k
e
r
v
j
f
r
7
k
5
9
'
.
.
.
H
E
A
D
i
s
n
o
w
a
t
b
3
c
9
a
d
1
U
p
d
a
t
e
d
a
t
a
_
r
e
q
u
i
r
e
m
e
n
t
.
j
s
o
n
B
u
i
l
d
i
n
g
c
o
n
d
a
e
n
v
i
r
o
n
m
e
n
t
f
o
r
p
y
t
h
o
n
=
3
.
7
U
s
i
n
g
P
y
t
h
o
n
B
u
i
l
d
P
a
c
k
b
u
i
l
d
e
r
B
u
i
l
d
i
n
g
c
o
n
d
a
e
n
v
i
r
o
n
m
e
n
t
f
o
r
p
y
t
h
o
n
=
3
.
7
B
u
i
l
d
i
n
g
c
o
n
d
a
e
n
v
i
r
o
n
m
e
n
t
f
o
r
p
y
t
h
o
n
=
3
.
7
S
t
e
p
1
/
5
3
:
F
R
O
M
b
u
i
l
d
p
a
c
k
-
d
e
p
s
:
b
i
o
n
i
c
-
-
-
>
b
f
8
9
e
b
f
6
b
3
e
4
S
t
e
p
2
/
5
3
:
E
N
V
D
E
B
I
A
N
_
F
R
O
N
T
E
N
D
=
n
o
n
i
n
t
e
r
a
c
t
i
v
e
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
a
e
3
7
8
d
e
4
f
5
b
9
S
t
e
p
3
/
5
3
:
R
U
N
a
p
t
-
g
e
t
-
q
q
u
p
d
a
t
e
&
&
a
p
t
-
g
e
t
-
q
q
i
n
s
t
a
l
l
-
-
y
e
s
-
-
n
o
-
i
n
s
t
a
l
l
-
r
e
c
o
m
m
e
n
d
s
l
o
c
a
l
e
s
>
/
d
e
v
/
n
u
l
l
&
&
a
p
t
-
g
e
t
-
q
q
p
u
r
g
e
&
&
a
p
t
-
g
e
t
-
q
q
c
l
e
a
n
&
&
r
m
-
r
f
/
v
a
r
/
l
i
b
/
a
p
t
/
l
i
s
t
s
/
*
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
0
8
a
7
8
c
f
b
4
0
4
9
S
t
e
p
4
/
5
3
:
R
U
N
e
c
h
o
"
e
n
_
U
S
.
U
T
F
-
8
U
T
F
-
8
"
>
/
e
t
c
/
l
o
c
a
l
e
.
g
e
n
&
&
l
o
c
a
l
e
-
g
e
n
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
f
b
c
e
b
2
a
6
7
7
3
3
S
t
e
p
5
/
5
3
:
E
N
V
L
C
_
A
L
L
e
n
_
U
S
.
U
T
F
-
8
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
3
c
f
7
0
6
1
2
d
1
f
c
S
t
e
p
6
/
5
3
:
E
N
V
L
A
N
G
e
n
_
U
S
.
U
T
F
-
8
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
5
4
7
2
7
b
8
2
2
f
5
d
S
t
e
p
7
/
5
3
:
E
N
V
L
A
N
G
U
A
G
E
e
n
_
U
S
.
U
T
F
-
8
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
d
c
5
8
8
c
8
5
7
c
0
2
S
t
e
p
8
/
5
3
:
E
N
V
S
H
E
L
L
/
b
i
n
/
b
a
s
h
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
5
e
0
6
2
1
4
b
4
b
4
4
S
t
e
p
9
/
5
3
:
A
R
G
N
B
_
U
S
E
R
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
4
2
f
f
2
b
e
7
7
1
3
8
S
t
e
p
1
0
/
5
3
:
A
R
G
N
B
_
U
I
D
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
b
d
4
1
7
f
3
d
3
d
d
4
S
t
e
p
1
1
/
5
3
:
E
N
V
U
S
E
R
$
{
N
B
_
U
S
E
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
b
6
0
4
3
0
c
8
2
d
1
0
S
t
e
p
1
2
/
5
3
:
E
N
V
H
O
M
E
/
h
o
m
e
/
$
{
N
B
_
U
S
E
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
5
e
4
5
8
a
f
f
2
5
1
0
S
t
e
p
1
3
/
5
3
:
R
U
N
g
r
o
u
p
a
d
d
-
-
g
i
d
$
{
N
B
_
U
I
D
}
$
{
N
B
_
U
S
E
R
}
&
&
u
s
e
r
a
d
d
-
-
c
o
m
m
e
n
t
"
D
e
f
a
u
l
t
u
s
e
r
"
-
-
c
r
e
a
t
e
-
h
o
m
e
-
-
g
i
d
$
{
N
B
_
U
I
D
}
-
-
n
o
-
l
o
g
-
i
n
i
t
-
-
s
h
e
l
l
/
b
i
n
/
b
a
s
h
-
-
u
i
d
$
{
N
B
_
U
I
D
}
$
{
N
B
_
U
S
E
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
a
4
3
8
6
3
2
f
3
d
c
3
S
t
e
p
1
4
/
5
3
:
R
U
N
w
g
e
t
-
-
q
u
i
e
t
-
O
-
h
t
t
p
s
:
/
/
d
e
b
.
n
o
d
e
s
o
u
r
c
e
.
c
o
m
/
g
p
g
k
e
y
/
n
o
d
e
s
o
u
r
c
e
.
g
p
g
.
k
e
y
|
a
p
t
-
k
e
y
a
d
d
-
&
&
D
I
S
T
R
O
=
"
b
i
o
n
i
c
"
&
&
e
c
h
o
"
d
e
b
h
t
t
p
s
:
/
/
d
e
b
.
n
o
d
e
s
o
u
r
c
e
.
c
o
m
/
n
o
d
e
_
1
4
.
x
$
D
I
S
T
R
O
m
a
i
n
"
>
>
/
e
t
c
/
a
p
t
/
s
o
u
r
c
e
s
.
l
i
s
t
.
d
/
n
o
d
e
s
o
u
r
c
e
.
l
i
s
t
&
&
e
c
h
o
"
d
e
b
-
s
r
c
h
t
t
p
s
:
/
/
d
e
b
.
n
o
d
e
s
o
u
r
c
e
.
c
o
m
/
n
o
d
e
_
1
4
.
x
$
D
I
S
T
R
O
m
a
i
n
"
>
>
/
e
t
c
/
a
p
t
/
s
o
u
r
c
e
s
.
l
i
s
t
.
d
/
n
o
d
e
s
o
u
r
c
e
.
l
i
s
t
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
0
9
4
2
e
4
7
a
e
8
9
5
S
t
e
p
1
5
/
5
3
:
R
U
N
a
p
t
-
g
e
t
-
q
q
u
p
d
a
t
e
&
&
a
p
t
-
g
e
t
-
q
q
i
n
s
t
a
l
l
-
-
y
e
s
-
-
n
o
-
i
n
s
t
a
l
l
-
r
e
c
o
m
m
e
n
d
s
l
e
s
s
n
o
d
e
j
s
u
n
z
i
p
>
/
d
e
v
/
n
u
l
l
&
&
a
p
t
-
g
e
t
-
q
q
p
u
r
g
e
&
&
a
p
t
-
g
e
t
-
q
q
c
l
e
a
n
&
&
r
m
-
r
f
/
v
a
r
/
l
i
b
/
a
p
t
/
l
i
s
t
s
/
*
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
b
a
d
1
e
9
6
f
4
4
9
e
S
t
e
p
1
6
/
5
3
:
E
X
P
O
S
E
8
8
8
8
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
7
3
0
9
0
a
b
9
c
4
6
f
S
t
e
p
1
7
/
5
3
:
E
N
V
A
P
P
_
B
A
S
E
/
s
r
v
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
3
a
4
d
1
8
f
1
d
9
6
9
S
t
e
p
1
8
/
5
3
:
E
N
V
N
P
M
_
D
I
R
$
{
A
P
P
_
B
A
S
E
}
/
n
p
m
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
0
4
7
5
c
6
1
2
f
2
8
4
S
t
e
p
1
9
/
5
3
:
E
N
V
N
P
M
_
C
O
N
F
I
G
_
G
L
O
B
A
L
C
O
N
F
I
G
$
{
N
P
M
_
D
I
R
}
/
n
p
m
r
c
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
4
a
2
d
8
b
0
f
c
c
6
c
S
t
e
p
2
0
/
5
3
:
E
N
V
C
O
N
D
A
_
D
I
R
$
{
A
P
P
_
B
A
S
E
}
/
c
o
n
d
a
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
d
1
a
0
2
9
6
9
9
5
4
6
S
t
e
p
2
1
/
5
3
:
E
N
V
N
B
_
P
Y
T
H
O
N
_
P
R
E
F
I
X
$
{
C
O
N
D
A
_
D
I
R
}
/
e
n
v
s
/
n
o
t
e
b
o
o
k
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
b
1
4
a
9
e
7
0
1
1
a
e
S
t
e
p
2
2
/
5
3
:
E
N
V
N
B
_
E
N
V
I
R
O
N
M
E
N
T
_
F
I
L
E
/
t
m
p
/
e
n
v
/
e
n
v
i
r
o
n
m
e
n
t
.
l
o
c
k
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
7
b
b
9
6
4
d
8
7
d
1
0
S
t
e
p
2
3
/
5
3
:
E
N
V
K
E
R
N
E
L
_
P
Y
T
H
O
N
_
P
R
E
F
I
X
$
{
N
B
_
P
Y
T
H
O
N
_
P
R
E
F
I
X
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
5
6
b
6
9
a
c
2
7
d
8
1
S
t
e
p
2
4
/
5
3
:
E
N
V
P
A
T
H
$
{
N
B
_
P
Y
T
H
O
N
_
P
R
E
F
I
X
}
/
b
i
n
:
$
{
C
O
N
D
A
_
D
I
R
}
/
b
i
n
:
$
{
N
P
M
_
D
I
R
}
/
b
i
n
:
$
{
P
A
T
H
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
5
5
a
8
6
5
e
1
b
0
c
a
S
t
e
p
2
5
/
5
3
:
C
O
P
Y
-
-
c
h
o
w
n
=
1
0
0
0
:
1
0
0
0
b
u
i
l
d
_
s
c
r
i
p
t
_
f
i
l
e
s
/
-
2
f
u
s
r
-
2
f
l
i
b
-
2
f
p
y
t
h
o
n
3
-
2
e
8
-
2
f
s
i
t
e
-
2
d
p
a
c
k
a
g
e
s
-
2
f
r
e
p
o
2
d
o
c
k
e
r
-
2
f
b
u
i
l
d
p
a
c
k
s
-
2
f
c
o
n
d
a
-
2
f
a
c
t
i
v
a
t
e
-
2
d
c
o
n
d
a
-
2
e
s
h
-
3
9
1
a
f
5
/
e
t
c
/
p
r
o
f
i
l
e
.
d
/
a
c
t
i
v
a
t
e
-
c
o
n
d
a
.
s
h
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
d
8
2
b
4
d
8
7
d
2
7
7
S
t
e
p
2
6
/
5
3
:
C
O
P
Y
-
-
c
h
o
w
n
=
1
0
0
0
:
1
0
0
0
b
u
i
l
d
_
s
c
r
i
p
t
_
f
i
l
e
s
/
-
2
f
u
s
r
-
2
f
l
i
b
-
2
f
p
y
t
h
o
n
3
-
2
e
8
-
2
f
s
i
t
e
-
2
d
p
a
c
k
a
g
e
s
-
2
f
r
e
p
o
2
d
o
c
k
e
r
-
2
f
b
u
i
l
d
p
a
c
k
s
-
2
f
c
o
n
d
a
-
2
f
e
n
v
i
r
o
n
m
e
n
t
-
2
e
p
y
-
2
d
3
-
2
e
7
-
2
e
l
o
c
k
-
4
f
1
1
5
4
/
t
m
p
/
e
n
v
/
e
n
v
i
r
o
n
m
e
n
t
.
l
o
c
k
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
1
7
5
f
3
c
2
1
2
a
a
c
S
t
e
p
2
7
/
5
3
:
C
O
P
Y
-
-
c
h
o
w
n
=
1
0
0
0
:
1
0
0
0
b
u
i
l
d
_
s
c
r
i
p
t
_
f
i
l
e
s
/
-
2
f
u
s
r
-
2
f
l
i
b
-
2
f
p
y
t
h
o
n
3
-
2
e
8
-
2
f
s
i
t
e
-
2
d
p
a
c
k
a
g
e
s
-
2
f
r
e
p
o
2
d
o
c
k
e
r
-
2
f
b
u
i
l
d
p
a
c
k
s
-
2
f
c
o
n
d
a
-
2
f
i
n
s
t
a
l
l
-
2
d
m
i
n
i
f
o
r
g
e
-
2
e
b
a
s
h
-
5
1
4
2
1
4
/
t
m
p
/
i
n
s
t
a
l
l
-
m
i
n
i
f
o
r
g
e
.
b
a
s
h
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
c
1
b
c
f
5
d
3
b
b
d
2
S
t
e
p
2
8
/
5
3
:
R
U
N
m
k
d
i
r
-
p
$
{
N
P
M
_
D
I
R
}
&
&
c
h
o
w
n
-
R
$
{
N
B
_
U
S
E
R
}
:
$
{
N
B
_
U
S
E
R
}
$
{
N
P
M
_
D
I
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
1
c
2
9
9
7
e
0
2
b
e
2
S
t
e
p
2
9
/
5
3
:
U
S
E
R
$
{
N
B
_
U
S
E
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
4
3
d
a
6
d
6
1
d
8
0
f
S
t
e
p
3
0
/
5
3
:
R
U
N
n
p
m
c
o
n
f
i
g
-
-
g
l
o
b
a
l
s
e
t
p
r
e
f
i
x
$
{
N
P
M
_
D
I
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
a
0
e
b
3
d
6
c
7
b
d
e
S
t
e
p
3
1
/
5
3
:
U
S
E
R
r
o
o
t
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
3
c
d
d
b
7
a
e
b
c
7
6
S
t
e
p
3
2
/
5
3
:
R
U
N
T
I
M
E
F
O
R
M
A
T
=
'
t
i
m
e
:
%
3
R
'
b
a
s
h
-
c
'
t
i
m
e
/
t
m
p
/
i
n
s
t
a
l
l
-
m
i
n
i
f
o
r
g
e
.
b
a
s
h
'
&
&
r
m
-
r
f
/
t
m
p
/
i
n
s
t
a
l
l
-
m
i
n
i
f
o
r
g
e
.
b
a
s
h
/
t
m
p
/
e
n
v
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
1
0
3
1
2
2
1
c
3
d
3
e
S
t
e
p
3
3
/
5
3
:
A
R
G
R
E
P
O
_
D
I
R
=
$
{
H
O
M
E
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
6
c
e
4
4
0
4
a
9
f
a
0
S
t
e
p
3
4
/
5
3
:
E
N
V
R
E
P
O
_
D
I
R
$
{
R
E
P
O
_
D
I
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
0
4
0
b
5
7
7
3
4
c
8
5
S
t
e
p
3
5
/
5
3
:
W
O
R
K
D
I
R
$
{
R
E
P
O
_
D
I
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
a
2
2
c
4
5
2
2
f
2
5
b
S
t
e
p
3
6
/
5
3
:
R
U
N
c
h
o
w
n
$
{
N
B
_
U
S
E
R
}
:
$
{
N
B
_
U
S
E
R
}
$
{
R
E
P
O
_
D
I
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
4
8
7
a
0
e
8
8
2
c
0
b
S
t
e
p
3
7
/
5
3
:
E
N
V
P
A
T
H
$
{
H
O
M
E
}
/
.
l
o
c
a
l
/
b
i
n
:
$
{
R
E
P
O
_
D
I
R
}
/
.
l
o
c
a
l
/
b
i
n
:
$
{
P
A
T
H
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
9
4
2
a
7
1
9
1
c
6
f
5
S
t
e
p
3
8
/
5
3
:
E
N
V
C
O
N
D
A
_
D
E
F
A
U
L
T
_
E
N
V
$
{
K
E
R
N
E
L
_
P
Y
T
H
O
N
_
P
R
E
F
I
X
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
a
7
9
7
4
1
a
a
8
2
6
9
S
t
e
p
3
9
/
5
3
:
C
O
P
Y
-
-
c
h
o
w
n
=
1
0
0
0
:
1
0
0
0
s
r
c
/
b
i
n
d
e
r
/
r
e
q
u
i
r
e
m
e
n
t
s
.
t
x
t
$
{
R
E
P
O
_
D
I
R
}
/
b
i
n
d
e
r
/
r
e
q
u
i
r
e
m
e
n
t
s
.
t
x
t
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
2
c
6
3
b
3
5
c
7
8
b
b
S
t
e
p
4
0
/
5
3
:
U
S
E
R
$
{
N
B
_
U
S
E
R
}
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
3
9
f
1
e
3
7
5
b
d
2
8
S
t
e
p
4
1
/
5
3
:
R
U
N
$
{
K
E
R
N
E
L
_
P
Y
T
H
O
N
_
P
R
E
F
I
X
}
/
b
i
n
/
p
i
p
i
n
s
t
a
l
l
-
-
n
o
-
c
a
c
h
e
-
d
i
r
-
r
"
b
i
n
d
e
r
/
r
e
q
u
i
r
e
m
e
n
t
s
.
t
x
t
"
-
-
-
>
U
s
i
n
g
c
a
c
h
e
-
-
-
>
d
b
2
9
3
f
1
f
1
a
5
2
S
t
e
p
4
2
/
5
3
:
C
O
P
Y
-
-
c
h
o
w
n
=
1
0
0
0
:
1
0
0
0
s
r
c
/
$
{
R
E
P
O
_
D
I
R
}
-
-
-
>
2
8
7
4
2
1
f
5
6
1
9
3
S
t
e
p
4
3
/
5
3
:
L
A
B
E
L
r
e
p
o
2
d
o
c
k
e
r
.
r
e
f
=
"
b
3
c
9
a
d
1
c
1
4
8
b
2
7
8
4
a
a
c
c
a
2
d
f
c
6
2
4
f
6
5
9
9
f
4
e
9
4
4
4
"
-
-
-
>
R
u
n
n
i
n
g
i
n
2
8
5
f
e
a
0
8
7
8
d
7
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
2
8
5
f
e
a
0
8
7
8
d
7
-
-
-
>
0
8
a
c
9
5
9
0
6
3
c
e
S
t
e
p
4
4
/
5
3
:
L
A
B
E
L
r
e
p
o
2
d
o
c
k
e
r
.
r
e
p
o
=
"
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
r
r
s
g
2
0
2
0
/
p
a
p
e
r
"
-
-
-
>
R
u
n
n
i
n
g
i
n
a
1
e
7
f
e
b
e
a
8
2
b
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
a
1
e
7
f
e
b
e
a
8
2
b
-
-
-
>
3
9
c
c
2
9
c
1
6
d
1
3
S
t
e
p
4
5
/
5
3
:
L
A
B
E
L
r
e
p
o
2
d
o
c
k
e
r
.
v
e
r
s
i
o
n
=
"
2
0
2
1
.
0
8
.
0
"
-
-
-
>
R
u
n
n
i
n
g
i
n
8
9
0
1
2
e
1
c
d
7
9
2
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
8
9
0
1
2
e
1
c
d
7
9
2
-
-
-
>
9
6
6
7
5
4
6
b
9
9
f
1
S
t
e
p
4
6
/
5
3
:
U
S
E
R
$
{
N
B
_
U
S
E
R
}
-
-
-
>
R
u
n
n
i
n
g
i
n
d
8
c
7
a
0
3
b
4
c
d
5
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
d
8
c
7
a
0
3
b
4
c
d
5
-
-
-
>
5
b
c
8
9
0
c
1
f
6
3
b
S
t
e
p
4
7
/
5
3
:
R
U
N
c
h
m
o
d
+
x
b
i
n
d
e
r
/
p
o
s
t
B
u
i
l
d
-
-
-
>
R
u
n
n
i
n
g
i
n
d
b
f
f
e
f
9
9
8
7
8
c
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
d
b
f
f
e
f
9
9
8
7
8
c
-
-
-
>
b
0
0
7
6
a
3
6
2
6
5
6
S
t
e
p
4
8
/
5
3
:
R
U
N
.
/
b
i
n
d
e
r
/
p
o
s
t
B
u
i
l
d
-
-
-
>
R
u
n
n
i
n
g
i
n
3
0
2
3
7
f
0
e
5
e
1
c
[
9
1
m
C
l
o
n
i
n
g
i
n
t
o
'
c
o
n
t
e
n
t
/
a
n
a
l
y
s
i
s
'
.
.
.
[
0
m
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
3
0
2
3
7
f
0
e
5
e
1
c
-
-
-
>
6
f
7
8
f
3
9
4
c
c
d
8
S
t
e
p
4
9
/
5
3
:
E
N
V
P
Y
T
H
O
N
U
N
B
U
F
F
E
R
E
D
=
1
-
-
-
>
R
u
n
n
i
n
g
i
n
4
5
b
7
2
d
d
b
9
a
0
1
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
4
5
b
7
2
d
d
b
9
a
0
1
-
-
-
>
9
a
e
6
8
5
c
6
4
1
4
4
S
t
e
p
5
0
/
5
3
:
C
O
P
Y
/
p
y
t
h
o
n
3
-
l
o
g
i
n
/
u
s
r
/
l
o
c
a
l
/
b
i
n
/
p
y
t
h
o
n
3
-
l
o
g
i
n
-
-
-
>
0
c
d
1
f
5
3
8
a
a
3
6
S
t
e
p
5
1
/
5
3
:
C
O
P
Y
/
r
e
p
o
2
d
o
c
k
e
r
-
e
n
t
r
y
p
o
i
n
t
/
u
s
r
/
l
o
c
a
l
/
b
i
n
/
r
e
p
o
2
d
o
c
k
e
r
-
e
n
t
r
y
p
o
i
n
t
-
-
-
>
4
8
5
1
e
3
4
f
4
d
0
e
S
t
e
p
5
2
/
5
3
:
E
N
T
R
Y
P
O
I
N
T
[
"
/
u
s
r
/
l
o
c
a
l
/
b
i
n
/
r
e
p
o
2
d
o
c
k
e
r
-
e
n
t
r
y
p
o
i
n
t
"
]
-
-
-
>
R
u
n
n
i
n
g
i
n
9
f
a
2
6
9
7
3
6
2
7
9
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
9
f
a
2
6
9
7
3
6
2
7
9
-
-
-
>
1
3
1
4
7
8
e
2
4
8
9
3
S
t
e
p
5
3
/
5
3
:
C
M
D
[
"
j
u
p
y
t
e
r
"
,
"
n
o
t
e
b
o
o
k
"
,
"
-
-
i
p
"
,
"
0
.
0
.
0
.
0
"
]
-
-
-
>
R
u
n
n
i
n
g
i
n
4
d
3
b
2
1
a
0
7
2
8
4
R
e
m
o
v
i
n
g
i
n
t
e
r
m
e
d
i
a
t
e
c
o
n
t
a
i
n
e
r
4
d
3
b
2
1
a
0
7
2
8
4
-
-
-
>
c
2
2
6
5
3
4
3
f
c
7
d
{
"
a
u
x
"
:
{
"
I
D
"
:
"
s
h
a
2
5
6
:
c
2
2
6
5
3
4
3
f
c
7
d
4
8
1
5
c
f
f
3
a
5
0
5
7
f
f
c
7
c
5
4
1
5
4
d
e
5
e
2
2
b
2
c
d
5
3
9
3
4
b
e
9
7
d
2
e
a
0
e
9
b
a
9
"
}
}
S
u
c
c
e
s
s
f
u
l
l
y
b
u
i
l
t
c
2
2
6
5
3
4
3
f
c
7
d
S
u
c
c
e
s
s
f
u
l
l
y
t
a
g
g
e
d
b
i
n
d
e
r
-
r
e
g
i
s
t
r
y
.
c
o
n
p
.
c
l
o
u
d
/
b
i
n
d
e
r
-
r
e
g
i
s
t
r
y
.
c
o
n
p
.
c
l
o
u
d
/
b
i
n
d
e
r
-
r
r
s
g
2
0
2
0
-
2
d
p
a
p
e
r
-
f
9
d
f
a
7
:
b
3
c
9
a
d
1
c
1
4
8
b
2
7
8
4
a
a
c
c
a
2
d
f
c
6
2
4
f
6
5
9
9
f
4
e
9
4
4
4
P
u
s
h
i
n
g
i
m
a
g
e
P
u
s
h
i
n
g
i
m
a
g
e
P
u
s
h
i
n
g
i
m
a
g
e
P
u
s
h
i
n
g
i
m
a
g
e
P
u
s
h
i
n
g
i
m
a
g
e
P
u
s
h
i
n
g
i
m
a
g
e
P
u
s
h
i
n
g
i
m
a
g
e
S
u
c
c
e
s
s
f
u
l
l
y
p
u
s
h
e
d
b
i
n
d
e
r
-
r
e
g
i
s
t
r
y
.
c
o
n
p
.
c
l
o
u
d
/
b
i
n
d
e
r
-
r
e
g
i
s
t
r
y
.
c
o
n
p
.
c
l
o
u
d
/
b
i
n
d
e
r
-
r
r
s
g
2
0
2
0
-
2
d
p
a
p
e
r
-
f
9
d
f
a
7
:
b
3
c
9
a
d
1
c
1
4
8
b
2
7
8
4
a
a
c
c
a
2
d
f
c
6
2
4
f
6
5
9
9
f
4
e
9
4
4
4
B
u
i
l
t
i
m
a
g
e
,
l
a
u
n
c
h
i
n
g
.
.
.
L
a
u
n
c
h
i
n
g
s
e
r
v
e
r
.
.
.
S
e
r
v
e
r
r
e
q
u
e
s
t
e
d
2
0
2
3
-
0
7
-
0
6
T
2
0
:
1
9
:
2
7
.
0
6
1
9
4
5
Z
[
N
o
r
m
a
l
]
S
u
c
c
e
s
s
f
u
l
l
y
a
s
s
i
g
n
e
d
b
i
n
d
e
r
h
u
b
/
j
u
p
y
t
e
r
-
r
r
s
g
2
0
2
0
-
2
d
p
a
p
e
r
-
2
d
n
f
c
d
m
8
2
v
t
o
n
e
u
r
o
l
i
b
r
e
-
n
o
d
e
1
2
0
2
3
-
0
7
-
0
6
T
2
0
:
1
9
:
3
0
Z
[
N
o
r
m
a
l
]
C
o
n
t
a
i
n
e
r
i
m
a
g
e
"
j
u
p
y
t
e
r
h
u
b
/
k
8
s
-
n
e
t
w
o
r
k
-
t
o
o
l
s
:
1
.
1
.
2
"
a
l
r
e
a
d
y
p
r
e
s
e
n
t
o
n
m
a
c
h
i
n
e
2
0
2
3
-
0
7
-
0
6
T
2
0
:
1
9
:
3
2
Z
[
N
o
r
m
a
l
]
C
r
e
a
t
e
d
c
o
n
t
a
i
n
e
r
b
l
o
c
k
-
c
l
o
u
d
-
m
e
t
a
d
a
t
a
2
0
2
3
-
0
7
-
0
6
T
2
0
:
1
9
:
3
2
Z
[
N
o
r
m
a
l
]
S
t
a
r
t
e
d
c
o
n
t
a
i
n
e
r
b
l
o
c
k
-
c
l
o
u
d
-
m
e
t
a
d
a
t
a
2
0
2
3
-
0
7
-
0
6
T
2
0
:
1
9
:
3
3
Z
[
N
o
r
m
a
l
]
C
o
n
t
a
i
n
e
r
i
m
a
g
e
"
b
i
n
d
e
r
-
r
e
g
i
s
t
r
y
.
c
o
n
p
.
c
l
o
u
d
/
b
i
n
d
e
r
-
r
e
g
i
s
t
r
y
.
c
o
n
p
.
c
l
o
u
d
/
b
i
n
d
e
r
-
r
r
s
g
2
0
2
0
-
2
d
p
a
p
e
r
-
f
9
d
f
a
7
:
b
3
c
9
a
d
1
c
1
4
8
b
2
7
8
4
a
a
c
c
a
2
d
f
c
6
2
4
f
6
5
9
9
f
4
e
9
4
4
4
"
a
l
r
e
a
d
y
p
r
e
s
e
n
t
o
n
m
a
c
h
i
n
e
2
0
2
3
-
0
7
-
0
6
T
2
0
:
1
9
:
3
4
Z
[
N
o
r
m
a
l
]
C
r
e
a
t
e
d
c
o
n
t
a
i
n
e
r
n
o
t
e
b
o
o
k
2
0
2
3
-
0
7
-
0
6
T
2
0
:
1
9
:
3
5
Z
[
N
o
r
m
a
l
]
S
t
a
r
t
e
d
c
o
n
t
a
i
n
e
r
n
o
t
e
b
o
o
k
S
e
r
v
e
r
r
e
a
d
y
a
t
/
j
u
p
y
t
e
r
/
u
s
e
r
/
r
r
s
g
2
0
2
0
-
p
a
p
e
r
-
n
f
c
d
m
8
2
v
/
s
e
r
v
e
r
r
u
n
n
i
n
g
a
t
h
t
t
p
s
:
/
/
t
e
s
t
.
c
o
n
p
.
c
l
o
u
d
/
j
u
p
y
t
e
r
/
u
s
e
r
/
r
r
s
g
2
0
2
0
-
p
a
p
e
r
-
n
f
c
d
m
8
2
v
/
If the BinderHub build looks OK, please see the Jupyter Book build log(s) below.
Customized book build: traditional paper layout based on index.ipynb
Running Jupyter-Book v0.13.0
Source Folder: /home/jovyan/content
Config Path: /home/jovyan/content/_config.yml
Output Path: /mnt/books/rrsg2020/github.com/paper/b3c9ad1c148b2784aacca2dfc624f6599f4e9444/_build/_page/index/singlehtml
[01mRunning Sphinx v4.5.0[39;49;00m
Adding copy buttons to code blocks...
Adding copy buttons to code blocks...
[01mmaking output directory... [39;49;00mdone
[01mmyst v0.15.2:[39;49;00m MdParserConfig(renderer='sphinx', commonmark_only=False, enable_extensions=['colon_fence', 'dollarmath', 'linkify', 'substitution', 'tasklist'], dmath_allow_labels=True, dmath_allow_space=True, dmath_allow_digits=True, dmath_double_inline=False, update_mathjax=True, mathjax_classes='tex2jax_process|mathjax_process|math|output_area', disable_syntax=[], url_schemes=['mailto', 'http', 'https'], heading_anchors=None, heading_slug_func=None, html_meta=[], footnote_transition=True, substitutions=[], sub_delimiters=['{', '}'], words_per_minute=200)
MyST-NB: Excluded Paths: set()
[01mupdating environment: [39;49;00mMyST-NB: Potential docnames to execute: ['index']
[01mexecuting outdated notebooks... [39;49;00mExecuting: /home/jovyan/content/index.ipynb
[31mERROR: Execution Failed: /home/jovyan/content/index.ipynb[39;49;00m
done
[new config] 1 added, 0 changed, 0 removed
[01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
[31mERROR: Couldn't find cache key for notebook file content/index.ipynb. Outputs will not be inserted.
Last execution failed with traceback saved in /mnt/books/rrsg2020/github.com/paper/b3c9ad1c148b2784aacca2dfc624f6599f4e9444/_build/_page/index/singlehtml/reports/index.log[39;49;00m
[01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
[01mbuilding [singlehtml]: [39;49;00mall documents
[01mupdating environment: [39;49;00mMyST-NB: Potential docnames to execute: []
[01mexecuting outdated notebooks... [39;49;00mExecuting: /home/jovyan/content/index.ipynb
done
0 added, 0 changed, 0 removed
[31mERROR: Execution Failed: /home/jovyan/content/index.ipynb[39;49;00m
[01mlooking for now-outdated files... [39;49;00m1 found
[01mpickling environment... [39;49;00mdone
[01mchecking consistency... [39;49;00mdone
[01mpreparing documents... [39;49;00mdone
[01massembling single document... [39;49;00mdone
[01mwriting... [39;49;00mdone
[01mwriting additional files... [39;49;00mdone
[01mcopying images... [39;49;00m[ 50%] [33mimages/fig1.png[39;49;00m
[01mcopying images... [39;49;00m[100%] [33mimages/figure_3_full.png[39;49;00m
[01mcopying static files... [39;49;00mdone
[01mcopying extra files... [39;49;00mdone
[01mdumping object inventory... [39;49;00mdone
[01mbuild succeeded, 3 warnings.[39;49;00m
The HTML page is in ../../mnt/books/rrsg2020/github.com/paper/b3c9ad1c148b2784aacca2dfc624f6599f4e9444/_build/_page/index/singlehtml.
Jupyter-book execution failed!
🐞 After inspecting the logs above, you can interactively debug your notebooks on our BinderHub server.
For guidelines, please see the relevant documentation.
🐞 After inspecting the logs above, you can interactively debug your notebooks on our BinderHub server.
For guidelines, please see the relevant documentation.
@roboneuro build book
🔴 Binder build has failed 🥀
Status: Failed 1f33feb0
Last updated: 2023-07-06 15:11:20 PDT
The next comment will forward the logs
🥀 We ran into a problem building your book. Please see the log files below.
Waiting for build to start...
Picked Git content provider.
Cloning into '/tmp/repo2dockery3sytp4h'...
HEAD is now at 6f6987e Update data_requirement.json
Building conda environment for python=3.7Using PythonBuildPack builder
Building conda environment for python=3.7Building conda environment for python=3.7Step 1/53 : FROM buildpack-deps:bionic
---> bf89ebf6b3e4
Step 2/53 : ENV DEBIAN_FRONTEND=noninteractive
---> Using cache
---> ae378de4f5b9
Step 3/53 : RUN apt-get -qq update && apt-get -qq install --yes --no-install-recommends locales > /dev/null && apt-get -qq purge && apt-get -qq clean && rm -rf /var/lib/apt/lists/*
---> Using cache
---> 08a78cfb4049
Step 4/53 : RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
---> Using cache
---> fbceb2a67733
Step 5/53 : ENV LC_ALL en_US.UTF-8
---> Using cache
---> 3cf70612d1fc
Step 6/53 : ENV LANG en_US.UTF-8
---> Using cache
---> 54727b822f5d
Step 7/53 : ENV LANGUAGE en_US.UTF-8
---> Using cache
---> dc588c857c02
Step 8/53 : ENV SHELL /bin/bash
---> Using cache
---> 5e06214b4b44
Step 9/53 : ARG NB_USER
---> Using cache
---> 42ff2be77138
Step 10/53 : ARG NB_UID
---> Using cache
---> bd417f3d3dd4
Step 11/53 : ENV USER ${NB_USER}
---> Using cache
---> b60430c82d10
Step 12/53 : ENV HOME /home/${NB_USER}
---> Using cache
---> 5e458aff2510
Step 13/53 : RUN groupadd --gid ${NB_UID} ${NB_USER} && useradd --comment "Default user" --create-home --gid ${NB_UID} --no-log-init --shell /bin/bash --uid ${NB_UID} ${NB_USER}
---> Using cache
---> a438632f3dc3
Step 14/53 : RUN wget --quiet -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && DISTRO="bionic" && echo "deb https://deb.nodesource.com/node_14.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list && echo "deb-src https://deb.nodesource.com/node_14.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list
---> Using cache
---> 0942e47ae895
Step 15/53 : RUN apt-get -qq update && apt-get -qq install --yes --no-install-recommends less nodejs unzip > /dev/null && apt-get -qq purge && apt-get -qq clean && rm -rf /var/lib/apt/lists/*
---> Using cache
---> bad1e96f449e
Step 16/53 : EXPOSE 8888
---> Using cache
---> 73090ab9c46f
Step 17/53 : ENV APP_BASE /srv
---> Using cache
---> 3a4d18f1d969
Step 18/53 : ENV NPM_DIR ${APP_BASE}/npm
---> Using cache
---> 0475c612f284
Step 19/53 : ENV NPM_CONFIG_GLOBALCONFIG ${NPM_DIR}/npmrc
---> Using cache
---> 4a2d8b0fcc6c
Step 20/53 : ENV CONDA_DIR ${APP_BASE}/conda
---> Using cache
---> d1a029699546
Step 21/53 : ENV NB_PYTHON_PREFIX ${CONDA_DIR}/envs/notebook
---> Using cache
---> b14a9e7011ae
Step 22/53 : ENV NB_ENVIRONMENT_FILE /tmp/env/environment.lock
---> Using cache
---> 7bb964d87d10
Step 23/53 : ENV KERNEL_PYTHON_PREFIX ${NB_PYTHON_PREFIX}
---> Using cache
---> 56b69ac27d81
Step 24/53 : ENV PATH ${NB_PYTHON_PREFIX}/bin:${CONDA_DIR}/bin:${NPM_DIR}/bin:${PATH}
---> Using cache
---> 55a865e1b0ca
Step 25/53 : COPY --chown=1000:1000 build_script_files/-2fusr-2flib-2fpython3-2e8-2fsite-2dpackages-2frepo2docker-2fbuildpacks-2fconda-2factivate-2dconda-2esh-391af5 /etc/profile.d/activate-conda.sh
---> Using cache
---> d82b4d87d277
Step 26/53 : COPY --chown=1000:1000 build_script_files/-2fusr-2flib-2fpython3-2e8-2fsite-2dpackages-2frepo2docker-2fbuildpacks-2fconda-2fenvironment-2epy-2d3-2e7-2elock-4f1154 /tmp/env/environment.lock
---> Using cache
---> 175f3c212aac
Step 27/53 : COPY --chown=1000:1000 build_script_files/-2fusr-2flib-2fpython3-2e8-2fsite-2dpackages-2frepo2docker-2fbuildpacks-2fconda-2finstall-2dminiforge-2ebash-514214 /tmp/install-miniforge.bash
---> Using cache
---> c1bcf5d3bbd2
Step 28/53 : RUN mkdir -p ${NPM_DIR} && chown -R ${NB_USER}:${NB_USER} ${NPM_DIR}
---> Using cache
---> 1c2997e02be2
Step 29/53 : USER ${NB_USER}
---> Using cache
---> 43da6d61d80f
Step 30/53 : RUN npm config --global set prefix ${NPM_DIR}
---> Using cache
---> a0eb3d6c7bde
Step 31/53 : USER root
---> Using cache
---> 3cddb7aebc76
Step 32/53 : RUN TIMEFORMAT='time: %3R' bash -c 'time /tmp/install-miniforge.bash' && rm -rf /tmp/install-miniforge.bash /tmp/env
---> Using cache
---> 1031221c3d3e
Step 33/53 : ARG REPO_DIR=${HOME}
---> Using cache
---> 6ce4404a9fa0
Step 34/53 : ENV REPO_DIR ${REPO_DIR}
---> Using cache
---> 040b57734c85
Step 35/53 : WORKDIR ${REPO_DIR}
---> Using cache
---> a22c4522f25b
Step 36/53 : RUN chown ${NB_USER}:${NB_USER} ${REPO_DIR}
---> Using cache
---> 487a0e882c0b
Step 37/53 : ENV PATH ${HOME}/.local/bin:${REPO_DIR}/.local/bin:${PATH}
---> Using cache
---> 942a7191c6f5
Step 38/53 : ENV CONDA_DEFAULT_ENV ${KERNEL_PYTHON_PREFIX}
---> Using cache
---> a79741aa8269
Step 39/53 : COPY --chown=1000:1000 src/binder/requirements.txt ${REPO_DIR}/binder/requirements.txt
---> Using cache
---> 2c63b35c78bb
Step 40/53 : USER ${NB_USER}
---> Using cache
---> 39f1e375bd28
Step 41/53 : RUN ${KERNEL_PYTHON_PREFIX}/bin/pip install --no-cache-dir -r "binder/requirements.txt"
---> Using cache
---> db293f1f1a52
Step 42/53 : COPY --chown=1000:1000 src/ ${REPO_DIR}
---> 5b34ad33818b
Step 43/53 : LABEL repo2docker.ref="6f6987e27bff68ca02cc614c6e89662efd37e7b4"
---> Running in 7313ea92a17a
Removing intermediate container 7313ea92a17a
---> 6bf78f66f162
Step 44/53 : LABEL repo2docker.repo="https://github.com/rrsg2020/paper"
---> Running in 220b9b288872
Removing intermediate container 220b9b288872
---> 86a1b39e25de
Step 45/53 : LABEL repo2docker.version="2021.08.0"
---> Running in c3bd080a00a2
Removing intermediate container c3bd080a00a2
---> 89249f667b3a
Step 46/53 : USER ${NB_USER}
---> Running in c8eac55fcab9
Removing intermediate container c8eac55fcab9
---> 7643cf4bf471
Step 47/53 : RUN chmod +x binder/postBuild
---> Running in a7fa93a0e34d
Removing intermediate container a7fa93a0e34d
---> 00fe20dd41a0
Step 48/53 : RUN ./binder/postBuild
---> Running in 88e735a6979a
[91mCloning into 'content/analysis'...
[0mRemoving intermediate container 88e735a6979a
---> 6af5f955dd7d
Step 49/53 : ENV PYTHONUNBUFFERED=1
---> Running in e9c685cefa4a
Removing intermediate container e9c685cefa4a
---> 792acba01a85
Step 50/53 : COPY /python3-login /usr/local/bin/python3-login
---> 3f15fa8617b4
Step 51/53 : COPY /repo2docker-entrypoint /usr/local/bin/repo2docker-entrypoint
---> 3d05a60cc815
Step 52/53 : ENTRYPOINT ["/usr/local/bin/repo2docker-entrypoint"]
---> Running in 3c2ec6e5cb58
Removing intermediate container 3c2ec6e5cb58
---> 5acb5398fd35
Step 53/53 : CMD ["jupyter", "notebook", "--ip", "0.0.0.0"]
---> Running in 1b6f90ea2bc2
Removing intermediate container 1b6f90ea2bc2
---> 8736c8ec1240
{"aux": {"ID": "sha256:8736c8ec1240883c5aa96482559f4a83c2d7247190e953ea09a603fd40f41645"}}Successfully built 8736c8ec1240
Successfully tagged binder-registry.conp.cloud/binder-registry.conp.cloud/binder-rrsg2020-2dpaper-f9dfa7:6f6987e27bff68ca02cc614c6e89662efd37e7b4
Pushing image
Pushing image
Pushing image
Pushing image
Pushing image
Pushing image
Pushing image
Successfully pushed binder-registry.conp.cloud/binder-registry.conp.cloud/binder-rrsg2020-2dpaper-f9dfa7:6f6987e27bff68ca02cc614c6e89662efd37e7b4Built image, launching...
Launching server...
Server requested
2023-07-06T22:04:33.919117Z [Normal] Successfully assigned binderhub/jupyter-rrsg2020-2dpaper-2d6hi2f92c to neurolibre-master
2023-07-06T22:04:38Z [Normal] Container image "jupyterhub/k8s-network-tools:1.1.2" already present on machine
2023-07-06T22:04:44Z [Normal] Created container block-cloud-metadata
2023-07-06T22:04:45Z [Normal] Started container block-cloud-metadata
2023-07-06T22:04:46Z [Normal] Pulling image "binder-registry.conp.cloud/binder-registry.conp.cloud/binder-rrsg2020-2dpaper-f9dfa7:6f6987e27bff68ca02cc614c6e89662efd37e7b4"
2023-07-06T22:05:31Z [Normal] Successfully pulled image "binder-registry.conp.cloud/binder-registry.conp.cloud/binder-rrsg2020-2dpaper-f9dfa7:6f6987e27bff68ca02cc614c6e89662efd37e7b4" in 44.949990123s
2023-07-06T22:05:41Z [Normal] Created container notebook
2023-07-06T22:05:43Z [Normal] Started container notebook
Server ready at /jupyter/user/rrsg2020-paper-6hi2f92c/
server running at https://test.conp.cloud/jupyter/user/rrsg2020-paper-6hi2f92c/
If the BinderHub build looks OK, please see the Jupyter Book build log(s) below.
Customized book build: traditional paper layout based on index.ipynb
Running Jupyter-Book v0.13.0
Source Folder: /home/jovyan/content
Config Path: /home/jovyan/content/_config.yml
Output Path: /mnt/books/rrsg2020/github.com/paper/6f6987e27bff68ca02cc614c6e89662efd37e7b4/_build/_page/index/singlehtml
[01mRunning Sphinx v4.5.0[39;49;00m
Adding copy buttons to code blocks...
Adding copy buttons to code blocks...
[01mmaking output directory... [39;49;00mdone
[01mmyst v0.15.2:[39;49;00m MdParserConfig(renderer='sphinx', commonmark_only=False, enable_extensions=['colon_fence', 'dollarmath', 'linkify', 'substitution', 'tasklist'], dmath_allow_labels=True, dmath_allow_space=True, dmath_allow_digits=True, dmath_double_inline=False, update_mathjax=True, mathjax_classes='tex2jax_process|mathjax_process|math|output_area', disable_syntax=[], url_schemes=['mailto', 'http', 'https'], heading_anchors=None, heading_slug_func=None, html_meta=[], footnote_transition=True, substitutions=[], sub_delimiters=['{', '}'], words_per_minute=200)
MyST-NB: Excluded Paths: set()
[01mupdating environment: [39;49;00mMyST-NB: Potential docnames to execute: ['index']
[01mexecuting outdated notebooks... [39;49;00mExecuting: /home/jovyan/content/index.ipynb
[31mERROR: Execution Failed: /home/jovyan/content/index.ipynb[39;49;00m
done
[new config] 1 added, 0 changed, 0 removed
[01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
[31mERROR: Couldn't find cache key for notebook file content/index.ipynb. Outputs will not be inserted.
Last execution failed with traceback saved in /mnt/books/rrsg2020/github.com/paper/6f6987e27bff68ca02cc614c6e89662efd37e7b4/_build/_page/index/singlehtml/reports/index.log[39;49;00m
[01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
[01mbuilding [singlehtml]: [39;49;00mall documents
[01mupdating environment: [39;49;00mMyST-NB: Potential docnames to execute: []
[01mexecuting outdated notebooks... [39;49;00mExecuting: /home/jovyan/content/index.ipynb
done
0 added, 0 changed, 0 removed
[31mERROR: Execution Failed: /home/jovyan/content/index.ipynb[39;49;00m
[01mlooking for now-outdated files... [39;49;00m1 found
[01mpickling environment... [39;49;00mdone
[01mchecking consistency... [39;49;00mdone
[01mpreparing documents... [39;49;00mdone
[01massembling single document... [39;49;00mdone
[01mwriting... [39;49;00mdone
[01mwriting additional files... [39;49;00mdone
[01mcopying images... [39;49;00m[ 50%] [33mimages/fig1.png[39;49;00m
[01mcopying images... [39;49;00m[100%] [33mimages/figure_3_full.png[39;49;00m
[01mcopying static files... [39;49;00mdone
[01mcopying extra files... [39;49;00mdone
[01mdumping object inventory... [39;49;00mdone
[01mbuild succeeded, 3 warnings.[39;49;00m
The HTML page is in ../../mnt/books/rrsg2020/github.com/paper/6f6987e27bff68ca02cc614c6e89662efd37e7b4/_build/_page/index/singlehtml.
Jupyter-book execution failed!
🐞 After inspecting the logs above, you can interactively debug your notebooks on our BinderHub server.
For guidelines, please see the relevant documentation.
🐞 After inspecting the logs above, you can interactively debug your notebooks on our BinderHub server.
For guidelines, please see the relevant documentation.
@roboneuro build book
Submitting author: !--author-handle-->@mathieuboudreau<!--end-author-handle-- (Mathieu Boudreau) Repository: https://github.com/rrsg2020/paper Branch with paper.md (empty if default branch): main Version: v1.0.0 Editor: !--editor-->@pbellec<!--end-editor-- Reviewers: !--reviewers-list-->@pbellec<!--end-reviewers-list-- Reproducible preprint: https://preprint.neurolibre.org/10.55458/neurolibre.00014 Repository archive: 10.5281/zenodo.8419805 Data archive: 10.5281/zenodo.8419809 Book archive: 10.5281/zenodo.8419803 Docker archive: 10.5281/zenodo.8419811
Status
Status badge code:
Reviewers and authors:
Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)
Reviewer instructions & questions
@pbellec, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review. First of all you need to run this command in a separate comment to create the checklist:
The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @pbellec know.
✨ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest ✨
Checklists
@pbellec, please create your checklist typing:
@roboneuro generate my checklist