Skip to content

Commit 934212b

Browse files
committed
⬆️ Upgrade sphinxcontrib-bibtex to 2.4.2
1 parent 14917ca commit 934212b

File tree

3 files changed

+144
-137
lines changed

3 files changed

+144
-137
lines changed

docs/_sources/conf.py

Lines changed: 135 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,9 @@ def yaml_to_rst(path):
181181
# The short X.Y version.
182182
version = __version__
183183

184+
184185
# Get tags from GitHub
185186
# Set GITHUBTOKEN to your API token in your environment to increase rate limit.
186-
g = Github(os.environ.get('GITHUBTOKEN'))
187-
188-
189187
def _gh_rate_limit():
190188
print("""Release notes not updated due to GitHub API rate limit.
191189
@@ -210,49 +208,6 @@ def _gh_rate_limit():
210208
""")
211209

212210

213-
try:
214-
gh_cpac = g.get_user('FCP-INDI').get_repo('C-PAC')
215-
gh_tags = [t.name for t in gh_cpac.get_tags()]
216-
except RateLimitExceededException:
217-
_gh_rate_limit()
218-
gh_tags = []
219-
gh_tags.sort(reverse=True)
220-
221-
# don't build release notes for newer releases
222-
build_version = os.environ.get('CIRCLE_TAG', '').rstrip('-source')
223-
if len(build_version):
224-
gh_tags = [gh_tag for gh_tag in gh_tags if compare_versions(
225-
build_version, gh_tag
226-
)]
227-
228-
# Try to get release notes from GitHub
229-
try:
230-
gh_releases = []
231-
for t in gh_tags:
232-
try:
233-
gh_releases.append(gh_cpac.get_release(t).raw_data)
234-
except (AttributeError, UnknownObjectException):
235-
print(f'No notes for {t}')
236-
gh_releaseNotes = {r['tag_name']: {
237-
'name': r['name'],
238-
'body': r['body'],
239-
'published_at': r['published_at']
240-
} for r in gh_releases}
241-
except RateLimitExceededException:
242-
_gh_rate_limit()
243-
gh_releaseNotes = {
244-
t: {
245-
'name': t,
246-
'body': ''.join([
247-
'See https://github.com/FCP-INDI/C-PAC/releases/tag/',
248-
t,
249-
' for release notes.'
250-
]),
251-
'published_at': None
252-
} for t in gh_tags
253-
}
254-
255-
256211
def sort_tag(t):
257212
return(t[0:-4] if t[0].isdigit() else t[1:-4])
258213

@@ -277,94 +232,144 @@ def _unireplace(release_note, unireplace):
277232
)
278233

279234

280-
this_dir = os.path.dirname(os.path.abspath(__file__))
281-
release_notes_dir = os.path.join(this_dir, 'user', 'release_notes')
282-
if not os.path.exists(release_notes_dir):
283-
os.makedirs(release_notes_dir)
284-
latest_path = os.path.join(release_notes_dir, 'latest.rst')
285-
# all_release_notes = ''
286-
for t in gh_tags:
287-
if t in gh_releaseNotes:
288-
tag_header = '{}{}{}'.format(
289-
'Latest Release: ' if t == gh_tags[0] else '',
290-
(
291-
gh_releaseNotes[t]['name'][4:] if (
292-
gh_releaseNotes[t]['name'].startswith('CPAC')
293-
) else gh_releaseNotes[t]['name'][5:] if (
294-
gh_releaseNotes[t]['name'].startswith('C-PAC')
295-
) else gh_releaseNotes[t]['name']
296-
).strip(),
297-
' ({})'.format(
298-
dparser.parse(gh_releaseNotes[t]['published_at']).date(
299-
).strftime('%b %d, %Y')
300-
) if gh_releaseNotes[t]['published_at'] else ''
301-
)
302-
release_note = '\n'.join(_unireplace(
303-
"""{}
304-
{}
305-
{}
306-
""".format(
307-
tag_header,
308-
'^'*len(tag_header),
309-
m2r.convert(gh_releaseNotes[t]['body'].encode(
310-
'ascii',
311-
errors='backslashreplace'
312-
).decode('utf-8'))
313-
),
314-
{}
315-
))
316-
317-
release_notes_path = os.path.join(release_notes_dir, f'{t}.rst')
318-
if gh_releaseNotes[t]['published_at'] and not os.path.exists(
319-
release_notes_path
320-
) and not os.path.exists(
321-
os.path.join(release_notes_dir, f'v{t}.rst')
322-
):
323-
with open(release_notes_path, 'w+') as f:
324-
f.write(release_note)
325-
else:
326-
print(release_notes_path)
327-
328-
if tag_header.startswith('Latest') and not os.path.exists(latest_path):
329-
with open(latest_path, 'w+') as f:
330-
f.write(
331-
"""
332-
333-
.. include:: /user/release_notes/{latest}.rst
334-
335-
.. toctree::
336-
:hidden:
337-
:titlesonly:
338-
:maxdepth: 1
339-
340-
/user/release_notes/{latest}.rst
341-
""".format(latest=str(t))
342-
)
343-
344-
rnd = [
345-
d for d in os.listdir(release_notes_dir) if d not in [
346-
'index.rst',
347-
'latest.rst'
235+
gh_tags = []
236+
_gh_token = os.environ.get('GITHUBTOKEN')
237+
if _gh_token is None:
238+
g = None
239+
_gh_rate_limit()
240+
else:
241+
g = Github(os.environ.get('GITHUBTOKEN'))
242+
try:
243+
gh_cpac = g.get_user('FCP-INDI').get_repo('C-PAC')
244+
gh_tags = [t.name for t in gh_cpac.get_tags()]
245+
except RateLimitExceededException:
246+
_gh_rate_limit()
247+
gh_tags.sort(reverse=True)
248+
249+
# don't build release notes for newer releases
250+
build_version = os.environ.get('CIRCLE_TAG', '').rstrip('-source')
251+
if len(build_version):
252+
gh_tags = [gh_tag for gh_tag in gh_tags if compare_versions(
253+
build_version, gh_tag
254+
)]
255+
256+
# Try to get release notes from GitHub
257+
try:
258+
gh_releases = []
259+
for t in gh_tags:
260+
try:
261+
gh_releases.append(gh_cpac.get_release(t).raw_data)
262+
except (AttributeError, UnknownObjectException):
263+
print(f'No notes for {t}')
264+
gh_releaseNotes = {r['tag_name']: {
265+
'name': r['name'],
266+
'body': r['body'],
267+
'published_at': r['published_at']
268+
} for r in gh_releases}
269+
except RateLimitExceededException:
270+
_gh_rate_limit()
271+
gh_releaseNotes = {
272+
t: {
273+
'name': t,
274+
'body': ''.join([
275+
'See https://github.com/FCP-INDI/C-PAC/releases/tag/',
276+
t,
277+
' for release notes.'
278+
]),
279+
'published_at': None
280+
} for t in gh_tags
281+
}
282+
283+
this_dir = os.path.dirname(os.path.abspath(__file__))
284+
release_notes_dir = os.path.join(this_dir, 'user', 'release_notes')
285+
if not os.path.exists(release_notes_dir):
286+
os.makedirs(release_notes_dir)
287+
latest_path = os.path.join(release_notes_dir, 'latest.rst')
288+
# all_release_notes = ''
289+
for t in gh_tags:
290+
if t in gh_releaseNotes:
291+
tag_header = '{}{}{}'.format(
292+
'Latest Release: ' if t == gh_tags[0] else '',
293+
(
294+
gh_releaseNotes[t]['name'][4:] if (
295+
gh_releaseNotes[t]['name'].startswith('CPAC')
296+
) else gh_releaseNotes[t]['name'][5:] if (
297+
gh_releaseNotes[t]['name'].startswith('C-PAC')
298+
) else gh_releaseNotes[t]['name']
299+
).strip(),
300+
' ({})'.format(
301+
dparser.parse(gh_releaseNotes[t]['published_at']).date(
302+
).strftime('%b %d, %Y')
303+
) if gh_releaseNotes[t]['published_at'] else ''
304+
)
305+
release_note = '\n'.join(_unireplace(
306+
"""{}
307+
{}
308+
{}
309+
""".format(
310+
tag_header,
311+
'^'*len(tag_header),
312+
m2r.convert(gh_releaseNotes[t]['body'].encode(
313+
'ascii',
314+
errors='backslashreplace'
315+
).decode('utf-8'))
316+
),
317+
{}
318+
))
319+
320+
release_notes_path = os.path.join(release_notes_dir, f'{t}.rst')
321+
if gh_releaseNotes[t]['published_at'] and not os.path.exists(
322+
release_notes_path
323+
) and not os.path.exists(
324+
os.path.join(release_notes_dir, f'v{t}.rst')
325+
):
326+
with open(release_notes_path, 'w+') as f:
327+
f.write(release_note)
328+
else:
329+
print(release_notes_path)
330+
331+
if (
332+
tag_header.startswith('Latest') and
333+
not os.path.exists(latest_path)
334+
):
335+
with open(latest_path, 'w+') as f:
336+
f.write(
337+
"""
338+
339+
.. include:: /user/release_notes/{latest}.rst
340+
341+
.. toctree::
342+
:hidden:
343+
:titlesonly:
344+
:maxdepth: 1
345+
346+
/user/release_notes/{latest}.rst
347+
""".format(latest=str(t))
348+
)
349+
350+
rnd = [
351+
d for d in os.listdir(release_notes_dir) if d not in [
352+
'index.rst',
353+
'latest.rst'
354+
]
348355
]
349-
]
350-
rnd.sort(key=sort_tag, reverse=True)
356+
rnd.sort(key=sort_tag, reverse=True)
351357

352-
all_release_notes = """
353-
{}
358+
all_release_notes = """
359+
{}
354360
355-
.. toctree::
356-
:hidden:
357-
:titlesonly:
358-
:maxdepth: 1
361+
.. toctree::
362+
:hidden:
363+
:titlesonly:
364+
:maxdepth: 1
359365
360-
{}
361-
362-
""".format(
363-
'\n'.join([f'.. include:: /user/release_notes/{fp}' for fp in rnd]),
364-
'\n '.join([f'/user/release_notes/{d}' for d in rnd]))
365-
with open(os.path.join(release_notes_dir, 'index.rst'), 'w+') as f:
366-
f.write(all_release_notes.strip())
366+
{}
367367
368+
""".format(
369+
'\n'.join([f'.. include:: /user/release_notes/{fp}' for fp in rnd]),
370+
'\n '.join([f'/user/release_notes/{d}' for d in rnd]))
371+
with open(os.path.join(release_notes_dir, 'index.rst'), 'w+') as f:
372+
f.write(all_release_notes.strip())
368373

369374
# The full version, including alpha/beta/rc tags.
370375
release = f'{__version__} Beta'
@@ -579,7 +584,7 @@ def _unireplace(release_note, unireplace):
579584
580585
""".format(
581586
versions=', '.join(gh_tags[:5])
582-
)
587+
) if len(gh_tags) >= 5 else ""
583588

584589
def setup(app):
585590
from CPAC.utils.monitoring import custom_logging

docs/_sources/references/style.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ def format_doi(self, e):
3232
e : str
3333
digital object identifier
3434
"""
35-
return join(sep=':')[
36-
words['doi'],
37-
href[join(sep='/')[
35+
return href[join(sep='/')[
3836
'https://dx.doi.org',
3937
e
40-
], e]
38+
], join(sep=':')[
39+
words['doi'],
40+
e]
4141
]
4242

4343
def get_article_template(self, e):
@@ -64,7 +64,8 @@ def get_article_template(self, e):
6464
optional[join(sep='')[
6565
', pp. ', optional_field('pages')
6666
] if e.fields.get('pages') else ''],
67-
optional[self.format_doi(optional_field('doi'))],
67+
optional[self.format_doi(optional_field('doi')) if
68+
e.fields.get('doi') else ''],
6869
sentence[optional_field('note')],
6970
]
7071
return template
@@ -135,7 +136,8 @@ def get_misc_template(self, e):
135136
],
136137
optional[tag('em')[self.format_title(e, 'journal')]],
137138
]]],
138-
optional[self.format_doi(optional_field('doi'))],
139+
optional[self.format_doi(optional_field('doi')) if
140+
e.fields.get('doi') else ''],
139141
sentence[optional_field('note')],
140142
]
141143
return template

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ nbsphinx
1010
numpydoc
1111
PyGithub
1212
sphinx==4.0
13-
sphinxcontrib-bibtex>=2.3
13+
sphinxcontrib-bibtex==2.4.2
1414
sphinxcontrib-fulltoc
1515
sphinxcontrib-programoutput
1616
semver

0 commit comments

Comments
 (0)