neurolibre / neurolibre-reviews

Where NeuroLibre reviews live.
https://neurolibre.org
3 stars 1 forks source link

[REVIEW]: Results of the ISMRM 2020 joint Reproducible Research & Quantitative MR study groups reproducibility challenge on phantom and human brain T1 mapping #14

Closed roboneuro closed 10 months ago

roboneuro commented 1 year ago

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

Status badge code:

HTML: <a href="https://neurolibre.org/papers/7d5d631e961003d7770d524747618c7d"><img src="https://neurolibre.org/papers/7d5d631e961003d7770d524747618c7d/status.svg"></a>
Markdown: [![status](https://neurolibre.org/papers/7d5d631e961003d7770d524747618c7d/status.svg)](https://neurolibre.org/papers/7d5d631e961003d7770d524747618c7d)

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:

@roboneuro generate my 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

roboneuro commented 1 year 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
roboneuro commented 1 year ago
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
roboneuro commented 1 year ago
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
roboneuro commented 1 year ago

Wordcount for paper.md is 1880

roboneuro commented 1 year ago

Failed to discover a valid open source license

roboneuro commented 1 year ago

:warning: An error happened when generating the pdf.

agahkarakuzu commented 1 year ago

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
pbellec commented 1 year ago

looks like there is a similar problem in the DOI of the reference @mathieuboudreau

pbellec commented 1 year ago

@roboneuro generate book

roboneuro commented 1 year ago

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@roboneuro commands

pbellec commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

Book Build (Preview)


Status: Assigned to task 06b0a730 Last updated: 2023-06-07 07:12:03 PDT

agahkarakuzu commented 1 year ago

@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.

pbellec commented 1 year ago

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?

agahkarakuzu commented 1 year ago

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!
agahkarakuzu commented 1 year ago

@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?

mathieuboudreau commented 1 year ago

@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!

agahkarakuzu commented 1 year ago

@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?

agahkarakuzu commented 1 year ago

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!

mathieuboudreau commented 1 year ago

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

agahkarakuzu commented 1 year ago

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.

mathieuboudreau commented 1 year ago

@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!

agahkarakuzu commented 1 year ago

@mathieuboudreau thank you!

Can you push a content/_neurolibre.yml file that has the following content:

book_layout: traditional
single_page: index.ipynb
agahkarakuzu commented 1 year ago

@roboneuro commands

roboneuro commented 1 year ago

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
agahkarakuzu commented 1 year ago

@roboneuro preview server status

roboneuro commented 1 year ago

🟢 NeuroLibre server is active (running).
🍀 Ready to accept requests from Issue #14
🔗 URL: https://preview.neurolibre.org

agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

🟠 Book Build (Preview)(Update interval: 2 mins)


Status: In progress 97381e02 Last updated: 2023-07-05 15:27:04 PDT

:information_source: See details
Running for: $https://test.conp.cloud/build/gh/rrsg2020/paper.git/40e8cd85b77f256c1b9fbb8f45cf384d007aeb12
agahkarakuzu commented 1 year ago

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:

https://preview.neurolibre.org/book-artifacts/rrsg2020/github.com/paper/40e8cd85b77f256c1b9fbb8f45cf384d007aeb12/_build/_page/index/singlehtml/

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'
agahkarakuzu commented 1 year ago

@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!

agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago
🟠 **Book Build (Preview) Update interval: 2m**

Status: In progress 1d2137fb Last updated: 2023-07-05 16:32:42 PDT

:information_source: See details
Running for: https://test.conp.cloud/build/gh/rrsg2020/paper.git/461f0931ef41f10a3d2400f6819c38098fff2fd4
agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

🔴 Binder build has failed 🥀


Status: Failed efa2638e Last updated: 2023-07-05 17:02:11 PDT

:information_source: See details
The next comment will forward the logs
agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

🔴 Binder build has failed 🥀


Status: Failed 39708154 Last updated: 2023-07-05 18:12:33 PDT

:information_source: See details
The next comment will forward the logs
agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

🔴 Binder build has failed 🥀


Status: Failed 5dcc47fb Last updated: 2023-07-05 18:26:55 PDT

:information_source: See details
The next comment will forward the logs
agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

🔴 Binder build has failed 🥀


Status: Failed 98c0aa02 Last updated: 2023-07-05 18:39:43 PDT

:information_source: See details
The next comment will forward the logs
agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

🔴 Binder build has failed 🥀


Status: Failed 26ff654e Last updated: 2023-07-05 18:49:20 PDT

:information_source: See details
The next comment will forward the logs
agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

🔴 Binder build has failed 🥀


Status: Failed 55e4f1bf Last updated: 2023-07-06 13:24:28 PDT

:information_source: See details
The next comment will forward the logs
roboneuro commented 1 year ago

🥀 We ran into a problem building your book. Please see the log files below.

BinderHub build log
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.

Jupyter Book build log

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
Running Sphinx v4.5.0
Adding copy buttons to code blocks...
Adding copy buttons to code blocks...
making output directory... done
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()
updating environment: MyST-NB: Potential docnames to execute: ['index']
executing outdated notebooks... Executing: /home/jovyan/content/index.ipynb
ERROR: Execution Failed: /home/jovyan/content/index.ipynb
done
[new config] 1 added, 0 changed, 0 removed
reading sources... [100%] index
ERROR: 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

building [mo]: targets for 0 po files that are out of date
building [singlehtml]: all documents
updating environment: MyST-NB: Potential docnames to execute: []
executing outdated notebooks... Executing: /home/jovyan/content/index.ipynb
done
0 added, 0 changed, 0 removed
ERROR: Execution Failed: /home/jovyan/content/index.ipynb
looking for now-outdated files... 1 found
pickling environment... done
checking consistency... done
preparing documents... done
assembling single document... done
writing... done
writing additional files... done
copying images... [ 50%] images/fig1.png
copying images... [100%] images/figure_3_full.png

copying static files... done
copying extra files... done
dumping object inventory... done
build succeeded, 3 warnings.

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.

agahkarakuzu commented 1 year ago

@roboneuro build book

roboneuro commented 1 year ago

🔴 Binder build has failed 🥀


Status: Failed 1f33feb0 Last updated: 2023-07-06 15:11:20 PDT

:information_source: See details
The next comment will forward the logs
roboneuro commented 1 year ago

🥀 We ran into a problem building your book. Please see the log files below.

BinderHub build log
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
Cloning into 'content/analysis'...
Removing 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.

Jupyter Book build log

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
Running Sphinx v4.5.0
Adding copy buttons to code blocks...
Adding copy buttons to code blocks...
making output directory... done
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()
updating environment: MyST-NB: Potential docnames to execute: ['index']
executing outdated notebooks... Executing: /home/jovyan/content/index.ipynb
ERROR: Execution Failed: /home/jovyan/content/index.ipynb
done
[new config] 1 added, 0 changed, 0 removed
reading sources... [100%] index
ERROR: 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

building [mo]: targets for 0 po files that are out of date
building [singlehtml]: all documents
updating environment: MyST-NB: Potential docnames to execute: []
executing outdated notebooks... Executing: /home/jovyan/content/index.ipynb
done
0 added, 0 changed, 0 removed
ERROR: Execution Failed: /home/jovyan/content/index.ipynb
looking for now-outdated files... 1 found
pickling environment... done
checking consistency... done
preparing documents... done
assembling single document... done
writing... done
writing additional files... done
copying images... [ 50%] images/fig1.png
copying images... [100%] images/figure_3_full.png

copying static files... done
copying extra files... done
dumping object inventory... done
build succeeded, 3 warnings.

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.

agahkarakuzu commented 1 year ago

@roboneuro build book