Skip to content

Commit f080e3c

Browse files
authored
Merge pull request #91 from moshi4/develop
Bump to v1.9.1
2 parents 50606e4 + b590c08 commit f080e3c

File tree

14 files changed

+100
-132
lines changed

14 files changed

+100
-132
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
strategy:
1515
matrix:
1616
os: [ubuntu-latest, macos-latest]
17-
python-version: ["3.9", "3.10", "3.11", "3.12"]
17+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
1818
steps:
1919
- name: Checkout
2020
uses: actions/checkout@v4

docs/circos_plot.ipynb

Lines changed: 2 additions & 16 deletions
Large diffs are not rendered by default.

docs/radar_chart.ipynb

Lines changed: 11 additions & 3 deletions
Large diffs are not rendered by default.

requirements-dev.lock

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,22 @@
1212
-e file:.
1313
asttokens==3.0.0
1414
# via stack-data
15-
attrs==24.3.0
15+
attrs==25.3.0
1616
# via jsonschema
1717
# via referencing
18-
babel==2.16.0
18+
babel==2.17.0
1919
# via mkdocs-material
20-
beautifulsoup4==4.12.3
20+
backrefs==5.8
21+
# via mkdocs-material
22+
beautifulsoup4==4.13.4
2123
# via nbconvert
22-
biopython==1.84
24+
biopython==1.85
2325
# via pycirclize
2426
# via pygenomeviz
25-
black==24.10.0
27+
black==25.1.0
2628
bleach==6.2.0
2729
# via nbconvert
28-
certifi==2024.12.14
30+
certifi==2025.1.31
2931
# via requests
3032
cfgv==3.4.0
3133
# via pre-commit
@@ -34,21 +36,20 @@ charset-normalizer==3.4.1
3436
click==8.1.8
3537
# via black
3638
# via mkdocs
37-
# via mkdocstrings
3839
colorama==0.4.6
3940
# via griffe
4041
# via mkdocs-material
4142
comm==0.2.2
4243
# via ipykernel
4344
contourpy==1.3.0
4445
# via matplotlib
45-
coverage==7.6.10
46+
coverage==7.8.0
4647
# via pytest-cov
4748
cycler==0.12.1
4849
# via matplotlib
49-
debugpy==1.8.11
50+
debugpy==1.8.14
5051
# via ipykernel
51-
decorator==5.1.1
52+
decorator==5.2.1
5253
# via ipython
5354
defusedxml==0.7.1
5455
# via nbconvert
@@ -57,23 +58,23 @@ distlib==0.3.9
5758
exceptiongroup==1.2.2
5859
# via ipython
5960
# via pytest
60-
executing==2.1.0
61+
executing==2.2.0
6162
# via stack-data
6263
fastjsonschema==2.21.1
6364
# via nbformat
64-
filelock==3.16.1
65+
filelock==3.18.0
6566
# via virtualenv
66-
fonttools==4.55.3
67+
fonttools==4.57.0
6768
# via matplotlib
6869
ghp-import==2.1.0
6970
# via mkdocs
70-
griffe==1.5.4
71+
griffe==1.7.2
7172
# via mkdocstrings-python
72-
identify==2.6.5
73+
identify==2.6.9
7374
# via pre-commit
7475
idna==3.10
7576
# via requests
76-
importlib-metadata==8.5.0
77+
importlib-metadata==8.6.1
7778
# via jupyter-client
7879
# via markdown
7980
# via mkdocs
@@ -82,15 +83,15 @@ importlib-metadata==8.5.0
8283
# via nbconvert
8384
importlib-resources==6.5.2
8485
# via matplotlib
85-
iniconfig==2.0.0
86+
iniconfig==2.1.0
8687
# via pytest
8788
ipykernel==6.29.5
8889
# via mkdocs-jupyter
8990
ipython==8.18.1
9091
# via ipykernel
9192
jedi==0.19.2
9293
# via ipython
93-
jinja2==3.1.5
94+
jinja2==3.1.6
9495
# via mkdocs
9596
# via mkdocs-material
9697
# via mkdocstrings
@@ -110,11 +111,11 @@ jupyter-core==5.7.2
110111
# via nbformat
111112
jupyterlab-pygments==0.3.0
112113
# via nbconvert
113-
jupytext==1.16.6
114+
jupytext==1.17.0
114115
# via mkdocs-jupyter
115116
kiwisolver==1.4.7
116117
# via matplotlib
117-
markdown==3.7
118+
markdown==3.8
118119
# via mkdocs
119120
# via mkdocs-autorefs
120121
# via mkdocs-material
@@ -142,32 +143,32 @@ mdurl==0.1.2
142143
mergedeep==1.3.4
143144
# via mkdocs
144145
# via mkdocs-get-deps
145-
mistune==3.1.0
146+
mistune==3.1.3
146147
# via nbconvert
147148
mkdocs==1.6.1
148149
# via mkdocs-autorefs
149150
# via mkdocs-jupyter
150151
# via mkdocs-material
151152
# via mkdocstrings
152-
mkdocs-autorefs==1.2.0
153+
mkdocs-autorefs==1.4.1
153154
# via mkdocstrings
154155
# via mkdocstrings-python
155156
mkdocs-get-deps==0.2.0
156157
# via mkdocs
157158
mkdocs-jupyter==0.25.1
158-
mkdocs-material==9.5.49
159+
mkdocs-material==9.6.12
159160
# via mkdocs-jupyter
160161
mkdocs-material-extensions==1.3.1
161162
# via mkdocs-material
162-
mkdocstrings==0.27.0
163+
mkdocstrings==0.29.1
163164
# via mkdocstrings-python
164-
mkdocstrings-python==1.13.0
165+
mkdocstrings-python==1.16.10
165166
# via mkdocstrings
166167
mypy-extensions==1.0.0
167168
# via black
168169
nbclient==0.10.2
169170
# via nbconvert
170-
nbconvert==7.16.5
171+
nbconvert==7.16.6
171172
# via mkdocs-jupyter
172173
nbformat==5.10.4
173174
# via jupytext
@@ -205,20 +206,19 @@ pathspec==0.12.1
205206
# via mkdocs
206207
pexpect==4.9.0
207208
# via ipython
208-
pillow==11.1.0
209+
pillow==11.2.1
209210
# via matplotlib
210-
platformdirs==4.3.6
211+
platformdirs==4.3.7
211212
# via black
212213
# via jupyter-core
213214
# via mkdocs-get-deps
214-
# via mkdocstrings
215215
# via virtualenv
216216
pluggy==1.5.0
217217
# via pytest
218-
pre-commit==4.0.1
219-
prompt-toolkit==3.0.48
218+
pre-commit==4.2.0
219+
prompt-toolkit==3.0.51
220220
# via ipython
221-
psutil==6.1.1
221+
psutil==7.0.0
222222
# via ipykernel
223223
ptyprocess==0.7.0
224224
# via pexpect
@@ -230,20 +230,20 @@ pygments==2.19.1
230230
# via mkdocs-jupyter
231231
# via mkdocs-material
232232
# via nbconvert
233-
pymdown-extensions==10.14
233+
pymdown-extensions==10.14.3
234234
# via mkdocs-material
235235
# via mkdocstrings
236-
pyparsing==3.2.1
236+
pyparsing==3.2.3
237237
# via matplotlib
238-
pytest==8.3.4
238+
pytest==8.3.5
239239
# via pytest-cov
240-
pytest-cov==6.0.0
240+
pytest-cov==6.1.1
241241
python-dateutil==2.9.0.post0
242242
# via ghp-import
243243
# via jupyter-client
244244
# via matplotlib
245245
# via pandas
246-
pytz==2024.2
246+
pytz==2025.2
247247
# via pandas
248248
pyyaml==6.0.2
249249
# via jupytext
@@ -254,20 +254,18 @@ pyyaml==6.0.2
254254
# via pyyaml-env-tag
255255
pyyaml-env-tag==0.1
256256
# via mkdocs
257-
pyzmq==26.2.0
257+
pyzmq==26.4.0
258258
# via ipykernel
259259
# via jupyter-client
260-
referencing==0.35.1
260+
referencing==0.36.2
261261
# via jsonschema
262262
# via jsonschema-specifications
263-
regex==2024.11.6
264-
# via mkdocs-material
265263
requests==2.32.3
266264
# via mkdocs-material
267-
rpds-py==0.22.3
265+
rpds-py==0.24.0
268266
# via jsonschema
269267
# via referencing
270-
ruff==0.9.1
268+
ruff==0.11.6
271269
six==1.17.0
272270
# via python-dateutil
273271
soupsieve==2.6
@@ -294,16 +292,18 @@ traitlets==5.14.3
294292
# via nbclient
295293
# via nbconvert
296294
# via nbformat
297-
typing-extensions==4.12.2
295+
typing-extensions==4.13.2
296+
# via beautifulsoup4
298297
# via black
299298
# via ipython
300299
# via mistune
301-
# via mkdocstrings
302-
tzdata==2024.2
300+
# via mkdocstrings-python
301+
# via referencing
302+
tzdata==2025.2
303303
# via pandas
304-
urllib3==2.3.0
304+
urllib3==2.4.0
305305
# via requests
306-
virtualenv==20.28.1
306+
virtualenv==20.30.0
307307
# via pre-commit
308308
watchdog==6.0.0
309309
# via mkdocs

requirements.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
# universal: false
1111

1212
-e file:.
13-
biopython==1.84
13+
biopython==1.85
1414
# via pycirclize
1515
contourpy==1.3.0
1616
# via matplotlib
1717
cycler==0.12.1
1818
# via matplotlib
19-
fonttools==4.55.3
19+
fonttools==4.57.0
2020
# via matplotlib
2121
importlib-resources==6.5.2
2222
# via matplotlib
@@ -34,18 +34,18 @@ packaging==24.2
3434
# via matplotlib
3535
pandas==2.2.3
3636
# via pycirclize
37-
pillow==11.1.0
37+
pillow==11.2.1
3838
# via matplotlib
39-
pyparsing==3.2.1
39+
pyparsing==3.2.3
4040
# via matplotlib
4141
python-dateutil==2.9.0.post0
4242
# via matplotlib
4343
# via pandas
44-
pytz==2024.2
44+
pytz==2025.2
4545
# via pandas
4646
six==1.17.0
4747
# via python-dateutil
48-
tzdata==2024.2
48+
tzdata==2025.2
4949
# via pandas
5050
zipp==3.21.0
5151
# via importlib-resources

src/pycirclize/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from pycirclize.circos import Circos
22

3-
__version__ = "1.9.0"
3+
__version__ = "1.9.1"
44

55
__all__ = [
66
"Circos",

src/pycirclize/circos.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ def __init__(
8181
space_num = len(sectors) if endspace else len(sectors) - 1
8282
if isinstance(space, (list, tuple)):
8383
if len(space) != space_num:
84-
err_msg = f"{space=} is invalid.\n"
85-
err_msg += f"Length of space list must be {space_num}."
86-
raise ValueError(err_msg)
84+
raise ValueError(f"{space=} is invalid.\nLength of space list must be {space_num}.") # fmt: skip # noqa: E501
8785
space_list = list(space) + [0]
8886
space_deg_size = sum(space)
8987
else:
@@ -169,8 +167,7 @@ def ax(self) -> PolarAxes:
169167
Can't access `ax` property before calling `circos.plotfig()` method
170168
"""
171169
if self._ax is None:
172-
err_msg = "Can't access ax property before calling `circos.plotfig() method"
173-
raise ValueError(err_msg)
170+
raise ValueError("Can't access ax property before calling `circos.plotfig() method") # fmt:skip # noqa: E501
174171
return self._ax
175172

176173
############################################################
@@ -1034,8 +1031,7 @@ def plotfig(
10341031
# Check PolarAxes or not
10351032
if not isinstance(ax, PolarAxes):
10361033
ax_class_name = type(ax).__name__
1037-
err_msg = f"Input ax is not PolarAxes (={ax_class_name})."
1038-
raise ValueError(err_msg)
1034+
raise ValueError(f"Input ax is not PolarAxes (={ax_class_name}).")
10391035
fig = ax.get_figure()
10401036
self._initialize_polar_axes(ax)
10411037

@@ -1121,12 +1117,9 @@ def _check_degree_range(self, start: float, end: float) -> None:
11211117
"""
11221118
min_deg, max_deg = -360, 360
11231119
if not min_deg <= start < end <= max_deg:
1124-
err_msg = "start-end must be "
1125-
err_msg += f"'{min_deg} <= start < end <= {max_deg}' ({start=}, {end=})"
1126-
raise ValueError(err_msg)
1120+
raise ValueError(f"start-end must be '{min_deg} <= start < end <= {max_deg}' ({start=}, {end=})") # fmt: skip # noqa: E501
11271121
if end - start > max_deg:
1128-
err_msg = f"'end - start' must be less than {max_deg} ({start=}, {end=})"
1129-
raise ValueError(err_msg)
1122+
raise ValueError(f"'end - start' must be less than {max_deg} ({start=}, {end=})") # fmt: skip # noqa: E501
11301123

11311124
def _to_sector2range(
11321125
self,
@@ -1138,8 +1131,7 @@ def _to_sector2range(
11381131
if isinstance(value, (tuple, list)):
11391132
sector_start, sector_end = value
11401133
if not sector_start < sector_end:
1141-
err_msg = f"{sector_end=} must be larger than {sector_start=}."
1142-
raise ValueError(err_msg)
1134+
raise ValueError(f"{sector_end=} must be larger than {sector_start=}.") # fmt: skip # noqa: E501
11431135
sector2range[name] = (sector_start, sector_end)
11441136
else:
11451137
sector2range[name] = (0, value)
@@ -1234,8 +1226,7 @@ def _adjust_annotation(self) -> None:
12341226
if len(ann_list) == 0 or config.ann_adjust.max_iter <= 0:
12351227
return
12361228
if len(ann_list) > config.ann_adjust.limit:
1237-
warn_msg = f"Too many annotations(={len(ann_list)}). Annotation position adjustment is not done." # noqa: E501
1238-
warnings.warn(warn_msg)
1229+
warnings.warn(f"Too many annotations(={len(ann_list)}). Annotation position adjustment is not done.") # fmt: skip # noqa: E501
12391230
return
12401231

12411232
def get_ann_window_extent(ann: Annotation) -> Bbox:

src/pycirclize/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
R_LIM = (MIN_R, MAX_R)
1919
AXIS_FACE_PARAM = dict(zorder=0.99, ec="none", edgecolor="none")
2020
AXIS_EDGE_PARAM = dict(zorder=1.01, fc="none", facecolor="none")
21-
REL_TOL = 1e-10 # Relative Tolerance
21+
EPSILON = 1e-10
2222

2323
# Circos Color Scheme
2424
# http://circos.ca/tutorials/lessons/configuration/colors/

0 commit comments

Comments
 (0)