Skip to content

Commit

Permalink
MAINT: Use black (#11667)
Browse files Browse the repository at this point in the history
  • Loading branch information
larsoner authored May 2, 2023
2 parents 263114e + 39abba0 commit 16fe5b5
Show file tree
Hide file tree
Showing 717 changed files with 107,103 additions and 70,382 deletions.
1 change: 1 addition & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e81ec528a42ac687f3d961ed5cf8e25f236925b0 # black
1 change: 1 addition & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- uses: psf/black@stable
- uses: pre-commit/[email protected]

pytest:
Expand Down
10 changes: 5 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
repos:
# - repo: https://github.com/psf/black
# rev: 23.1.0
# hooks:
# - id: black
# args: [--quiet]
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
args: [--quiet]

# Ruff mne
- repo: https://github.com/charliermarsh/ruff-pre-commit
Expand Down
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ exclude Makefile
exclude .coveragerc
exclude *.yml
exclude *.yaml
exclude .git-blame-ignore-revs
exclude ignore_words.txt
exclude .mailmap
exclude codemeta.json
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ stages:
displayName: Install dependencies
- bash: |
make pre-commit
displayName: make ruff
displayName: make pre-commit
condition: always()
- bash: |
make nesting
Expand Down
1,958 changes: 1,158 additions & 800 deletions doc/conf.py

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion doc/install/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -282,11 +282,12 @@ Then make a local clone of your remote fork (``origin``)::
$ git clone https://github.com/$GITHUB_USERNAME/mne-python.git

Finally, set up a link between your local clone and the official repository
(``upstream``)::
(``upstream``) and set up ``git diff`` to work properly::

$ cd mne-python
$ git remote add upstream https://github.com/mne-tools/mne-python.git
$ git fetch --all
$ git config --local blame.ignoreRevsFile .git-blame-ignore-revs

Now we'll remove the *stable* version of MNE-Python and replace it with the
*development* version (the clone we just created with git). Make sure you're in
Expand Down
184 changes: 100 additions & 84 deletions doc/sphinxext/flow_diagram.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import os
from os import path as op

title = 'mne-python flow diagram'
title = "mne-python flow diagram"

font_face = 'Arial'
font_face = "Arial"
node_size = 12
node_small_size = 9
edge_size = 9
sensor_color = '#7bbeca'
source_color = '#ff6347'
sensor_color = "#7bbeca"
source_color = "#ff6347"

legend = """
<<FONT POINT-SIZE="%s">
Expand All @@ -17,62 +17,74 @@
Sensor (M/EEG) space</TD></TR>
<TR><TD BGCOLOR="%s"> </TD><TD ALIGN="left">
Source (brain) space</TD></TR>
</TABLE></FONT>>""" % (edge_size, sensor_color, source_color)
legend = ''.join(legend.split('\n'))
</TABLE></FONT>>""" % (
edge_size,
sensor_color,
source_color,
)
legend = "".join(legend.split("\n"))

nodes = dict(
T1='T1',
flashes='Flash5/30',
trans='Head-MRI trans',
recon='Freesurfer surfaces',
bem='BEM',
src='Source space\nmne.SourceSpaces',
cov='Noise covariance\nmne.Covariance',
fwd='Forward solution\nmne.forward.Forward',
inv='Inverse operator\nmne.minimum_norm.InverseOperator',
stc='Source estimate\nmne.SourceEstimate',
raw='Raw data\nmne.io.Raw',
epo='Epoched data\nmne.Epochs',
evo='Averaged data\nmne.Evoked',
pre='Preprocessed data\nmne.io.Raw',
T1="T1",
flashes="Flash5/30",
trans="Head-MRI trans",
recon="Freesurfer surfaces",
bem="BEM",
src="Source space\nmne.SourceSpaces",
cov="Noise covariance\nmne.Covariance",
fwd="Forward solution\nmne.forward.Forward",
inv="Inverse operator\nmne.minimum_norm.InverseOperator",
stc="Source estimate\nmne.SourceEstimate",
raw="Raw data\nmne.io.Raw",
epo="Epoched data\nmne.Epochs",
evo="Averaged data\nmne.Evoked",
pre="Preprocessed data\nmne.io.Raw",
legend=legend,
)

sensor_space = ('raw', 'pre', 'epo', 'evo', 'cov')
source_space = ('src', 'stc', 'bem', 'flashes', 'recon', 'T1')
sensor_space = ("raw", "pre", "epo", "evo", "cov")
source_space = ("src", "stc", "bem", "flashes", "recon", "T1")

edges = (
('T1', 'recon'),
('flashes', 'bem'),
('recon', 'bem'),
('recon', 'src', 'mne.setup_source_space'),
('src', 'fwd'),
('bem', 'fwd'),
('trans', 'fwd', 'mne.make_forward_solution'),
('fwd', 'inv'),
('cov', 'inv', 'mne.make_inverse_operator'),
('inv', 'stc'),
('evo', 'stc', 'mne.minimum_norm.apply_inverse'),
('raw', 'pre', 'raw.filter\n'
'mne.preprocessing.ICA\n'
'mne.preprocessing.compute_proj_eog\n'
'mne.preprocessing.compute_proj_ecg\n'
'...'),
('pre', 'epo', 'mne.Epochs'),
('epo', 'evo', 'epochs.average'),
('epo', 'cov', 'mne.compute_covariance'),
("T1", "recon"),
("flashes", "bem"),
("recon", "bem"),
("recon", "src", "mne.setup_source_space"),
("src", "fwd"),
("bem", "fwd"),
("trans", "fwd", "mne.make_forward_solution"),
("fwd", "inv"),
("cov", "inv", "mne.make_inverse_operator"),
("inv", "stc"),
("evo", "stc", "mne.minimum_norm.apply_inverse"),
(
"raw",
"pre",
"raw.filter\n"
"mne.preprocessing.ICA\n"
"mne.preprocessing.compute_proj_eog\n"
"mne.preprocessing.compute_proj_ecg\n"
"...",
),
("pre", "epo", "mne.Epochs"),
("epo", "evo", "epochs.average"),
("epo", "cov", "mne.compute_covariance"),
)

subgraphs = (
[('T1', 'flashes', 'recon', 'bem', 'src'),
('<Structural information<BR/><FONT POINT-SIZE="%s"><I>'
'Freesurfer / MNE-C</I></FONT>>' % node_small_size)],
[
("T1", "flashes", "recon", "bem", "src"),
(
'<Structural information<BR/><FONT POINT-SIZE="%s"><I>'
"Freesurfer / MNE-C</I></FONT>>" % node_small_size
),
],
)


def setup(app):
app.connect('builder-inited', generate_flow_diagram)
app.add_config_value('make_flow_diagram', True, 'html')
app.connect("builder-inited", generate_flow_diagram)
app.add_config_value("make_flow_diagram", True, "html")


def setup_module():
Expand All @@ -81,84 +93,88 @@ def setup_module():


def generate_flow_diagram(app):
out_dir = op.join(app.builder.outdir, '_static')
out_dir = op.join(app.builder.outdir, "_static")
if not op.isdir(out_dir):
os.makedirs(out_dir)
out_fname = op.join(out_dir, 'mne-python_flow.svg')
make_flow_diagram = app is None or \
bool(app.builder.config.make_flow_diagram)
out_fname = op.join(out_dir, "mne-python_flow.svg")
make_flow_diagram = app is None or bool(app.builder.config.make_flow_diagram)
if not make_flow_diagram:
print('Skipping flow diagram, webpage will have a missing image')
print("Skipping flow diagram, webpage will have a missing image")
return

import pygraphviz as pgv

g = pgv.AGraph(name=title, directed=True)

for key, label in nodes.items():
label = label.split('\n')
label = label.split("\n")
if len(label) > 1:
label[0] = ('<<FONT POINT-SIZE="%s">' % node_size
+ label[0] + '</FONT>')
label[0] = '<<FONT POINT-SIZE="%s">' % node_size + label[0] + "</FONT>"
for li in range(1, len(label)):
label[li] = ('<FONT POINT-SIZE="%s"><I>' % node_small_size
+ label[li] + '</I></FONT>')
label[-1] = label[-1] + '>'
label = '<BR/>'.join(label)
label[li] = (
'<FONT POINT-SIZE="%s"><I>' % node_small_size
+ label[li]
+ "</I></FONT>"
)
label[-1] = label[-1] + ">"
label = "<BR/>".join(label)
else:
label = label[0]
g.add_node(key, shape='plaintext', label=label)
g.add_node(key, shape="plaintext", label=label)

# Create and customize nodes and edges
for edge in edges:
g.add_edge(*edge[:2])
e = g.get_edge(*edge[:2])
if len(edge) > 2:
e.attr['label'] = ('<<I>' +
'<BR ALIGN="LEFT"/>'.join(edge[2].split('\n')) +
'<BR ALIGN="LEFT"/></I>>')
e.attr['fontsize'] = edge_size
e.attr["label"] = (
"<<I>"
+ '<BR ALIGN="LEFT"/>'.join(edge[2].split("\n"))
+ '<BR ALIGN="LEFT"/></I>>'
)
e.attr["fontsize"] = edge_size

# Change colors
for these_nodes, color in zip((sensor_space, source_space),
(sensor_color, source_color)):
for these_nodes, color in zip(
(sensor_space, source_space), (sensor_color, source_color)
):
for node in these_nodes:
g.get_node(node).attr['fillcolor'] = color
g.get_node(node).attr['style'] = 'filled'
g.get_node(node).attr["fillcolor"] = color
g.get_node(node).attr["style"] = "filled"

# Create subgraphs
for si, subgraph in enumerate(subgraphs):
g.add_subgraph(subgraph[0], 'cluster%s' % si,
label=subgraph[1], color='black')
g.add_subgraph(subgraph[0], "cluster%s" % si, label=subgraph[1], color="black")

# Format (sub)graphs
for gr in g.subgraphs() + [g]:
for x in [gr.node_attr, gr.edge_attr]:
x['fontname'] = font_face
g.node_attr['shape'] = 'box'
x["fontname"] = font_face
g.node_attr["shape"] = "box"

# A couple of special ones
for ni, node in enumerate(('fwd', 'inv', 'trans')):
for ni, node in enumerate(("fwd", "inv", "trans")):
node = g.get_node(node)
node.attr['gradientangle'] = 270
node.attr["gradientangle"] = 270
colors = (source_color, sensor_color)
colors = colors if ni == 0 else colors[::-1]
node.attr['fillcolor'] = ':'.join(colors)
node.attr['style'] = 'filled'
node.attr["fillcolor"] = ":".join(colors)
node.attr["style"] = "filled"
del node
g.get_node('legend').attr.update(shape='plaintext', margin=0, rank='sink')
g.get_node("legend").attr.update(shape="plaintext", margin=0, rank="sink")
# put legend in same rank/level as inverse
leg = g.add_subgraph(['legend', 'inv'], name='legendy')
leg.graph_attr['rank'] = 'same'
leg = g.add_subgraph(["legend", "inv"], name="legendy")
leg.graph_attr["rank"] = "same"

g.layout('dot')
g.draw(out_fname, format='svg')
g.layout("dot")
g.draw(out_fname, format="svg")
return g


# This is useful for testing/iterating to see what the result looks like
if __name__ == '__main__':
if __name__ == "__main__":
from mne.io.constants import Bunch
out_dir = op.abspath(op.join(op.dirname(__file__), '..', '_build', 'html'))
app = Bunch(builder=Bunch(outdir=out_dir,
config=Bunch(make_flow_diagram=True)))

out_dir = op.abspath(op.join(op.dirname(__file__), "..", "_build", "html"))
app = Bunch(builder=Bunch(outdir=out_dir, config=Bunch(make_flow_diagram=True)))
g = generate_flow_diagram(app)
Loading

0 comments on commit 16fe5b5

Please sign in to comment.