From 04230e1723f236ed2b5cf30f9e72db41d6d3e804 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 20 Sep 2023 18:22:03 -0400 Subject: [PATCH 01/10] issue: 26871 - Remove SimplePath class from patches.py which is deprecated --- .circleci/config.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5fc186a4143a..c914581f5211 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,24 +44,24 @@ commands: command: | sudo apt -qq update sudo apt install -y \ - inkscape \ - ffmpeg \ + cm-super \ dvipng \ + ffmpeg \ + fonts-crosextra-carlito \ + fonts-freefont-otf \ + fonts-humor-sans \ + fonts-noto-cjk \ + fonts-wqy-zenhei \ + graphviz \ + inkscape \ lmodern \ - cm-super \ + optipng \ + texlive-fonts-recommended \ texlive-latex-base \ texlive-latex-extra \ - texlive-fonts-recommended \ texlive-latex-recommended \ texlive-pictures \ - texlive-xetex \ - ttf-wqy-zenhei \ - graphviz \ - fonts-crosextra-carlito \ - fonts-freefont-otf \ - fonts-humor-sans \ - fonts-noto-cjk \ - optipng + texlive-xetex fonts-install: steps: From 25f5c43e781fe0c693af03a17af5853875f02fd6 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 20 Sep 2023 18:23:16 -0400 Subject: [PATCH 02/10] issue: 26871 - Remove SimplePath class from patches.py which is deprecated We don't need the optional packages and save a little download/install time. --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c914581f5211..60a1e8211e60 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -42,8 +42,8 @@ commands: - run: name: Install apt packages command: | - sudo apt -qq update - sudo apt install -y \ + sudo apt-get -qq update + sudo apt-get install -yy --no-install-recommends \ cm-super \ dvipng \ ffmpeg \ From 1615cc8a922de49e1f76a5a9330456306c104f70 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 21 Sep 2023 13:01:29 -0400 Subject: [PATCH 03/10] issue: 26871 - Remove SimplePath class from patches.py which is deprecated --- lib/matplotlib/tests/test_datetime.py | 384 ++++++++++++++++++++++++++ 1 file changed, 384 insertions(+) create mode 100644 lib/matplotlib/tests/test_datetime.py diff --git a/lib/matplotlib/tests/test_datetime.py b/lib/matplotlib/tests/test_datetime.py new file mode 100644 index 000000000000..fa6cee3916ff --- /dev/null +++ b/lib/matplotlib/tests/test_datetime.py @@ -0,0 +1,384 @@ +import pytest + +import matplotlib.pyplot as plt +import matplotlib as mpl + + +class TestDatetimePlotting: + @pytest.mark.xfail(reason="Test for acorr not written yet") + @mpl.style.context("default") + def test_acorr(self): + fig, ax = plt.subplots() + ax.acorr(...) + + @pytest.mark.xfail(reason="Test for angle_spectrum not written yet") + @mpl.style.context("default") + def test_angle_spectrum(self): + fig, ax = plt.subplots() + ax.angle_spectrum(...) + + @pytest.mark.xfail(reason="Test for annotate not written yet") + @mpl.style.context("default") + def test_annotate(self): + fig, ax = plt.subplots() + ax.annotate(...) + + @pytest.mark.xfail(reason="Test for arrow not written yet") + @mpl.style.context("default") + def test_arrow(self): + fig, ax = plt.subplots() + ax.arrow(...) + + @pytest.mark.xfail(reason="Test for axhline not written yet") + @mpl.style.context("default") + def test_axhline(self): + fig, ax = plt.subplots() + ax.axhline(...) + + @pytest.mark.xfail(reason="Test for axhspan not written yet") + @mpl.style.context("default") + def test_axhspan(self): + fig, ax = plt.subplots() + ax.axhspan(...) + + @pytest.mark.xfail(reason="Test for axline not written yet") + @mpl.style.context("default") + def test_axline(self): + fig, ax = plt.subplots() + ax.axline(...) + + @pytest.mark.xfail(reason="Test for axvline not written yet") + @mpl.style.context("default") + def test_axvline(self): + fig, ax = plt.subplots() + ax.axvline(...) + + @pytest.mark.xfail(reason="Test for axvspan not written yet") + @mpl.style.context("default") + def test_axvspan(self): + fig, ax = plt.subplots() + ax.axvspan(...) + + @pytest.mark.xfail(reason="Test for bar not written yet") + @mpl.style.context("default") + def test_bar(self): + fig, ax = plt.subplots() + ax.bar(...) + + @pytest.mark.xfail(reason="Test for bar_label not written yet") + @mpl.style.context("default") + def test_bar_label(self): + fig, ax = plt.subplots() + ax.bar_label(...) + + @pytest.mark.xfail(reason="Test for barbs not written yet") + @mpl.style.context("default") + def test_barbs(self): + fig, ax = plt.subplots() + ax.barbs(...) + + @pytest.mark.xfail(reason="Test for barh not written yet") + @mpl.style.context("default") + def test_barh(self): + fig, ax = plt.subplots() + ax.barh(...) + + @pytest.mark.xfail(reason="Test for boxplot not written yet") + @mpl.style.context("default") + def test_boxplot(self): + fig, ax = plt.subplots() + ax.boxplot(...) + + @pytest.mark.xfail(reason="Test for broken_barh not written yet") + @mpl.style.context("default") + def test_broken_barh(self): + fig, ax = plt.subplots() + ax.broken_barh(...) + + @pytest.mark.xfail(reason="Test for bxp not written yet") + @mpl.style.context("default") + def test_bxp(self): + fig, ax = plt.subplots() + ax.bxp(...) + + @pytest.mark.xfail(reason="Test for clabel not written yet") + @mpl.style.context("default") + def test_clabel(self): + fig, ax = plt.subplots() + ax.clabel(...) + + @pytest.mark.xfail(reason="Test for cohere not written yet") + @mpl.style.context("default") + def test_cohere(self): + fig, ax = plt.subplots() + ax.cohere(...) + + @pytest.mark.xfail(reason="Test for contour not written yet") + @mpl.style.context("default") + def test_contour(self): + fig, ax = plt.subplots() + ax.contour(...) + + @pytest.mark.xfail(reason="Test for contourf not written yet") + @mpl.style.context("default") + def test_contourf(self): + fig, ax = plt.subplots() + ax.contourf(...) + + @pytest.mark.xfail(reason="Test for csd not written yet") + @mpl.style.context("default") + def test_csd(self): + fig, ax = plt.subplots() + ax.csd(...) + + @pytest.mark.xfail(reason="Test for errorbar not written yet") + @mpl.style.context("default") + def test_errorbar(self): + fig, ax = plt.subplots() + ax.errorbar(...) + + @pytest.mark.xfail(reason="Test for eventplot not written yet") + @mpl.style.context("default") + def test_eventplot(self): + fig, ax = plt.subplots() + ax.eventplot(...) + + @pytest.mark.xfail(reason="Test for fill not written yet") + @mpl.style.context("default") + def test_fill(self): + fig, ax = plt.subplots() + ax.fill(...) + + @pytest.mark.xfail(reason="Test for fill_between not written yet") + @mpl.style.context("default") + def test_fill_between(self): + fig, ax = plt.subplots() + ax.fill_between(...) + + @pytest.mark.xfail(reason="Test for fill_betweenx not written yet") + @mpl.style.context("default") + def test_fill_betweenx(self): + fig, ax = plt.subplots() + ax.fill_betweenx(...) + + @pytest.mark.xfail(reason="Test for hexbin not written yet") + @mpl.style.context("default") + def test_hexbin(self): + fig, ax = plt.subplots() + ax.hexbin(...) + + @pytest.mark.xfail(reason="Test for hist not written yet") + @mpl.style.context("default") + def test_hist(self): + fig, ax = plt.subplots() + ax.hist(...) + + @pytest.mark.xfail(reason="Test for hist2d not written yet") + @mpl.style.context("default") + def test_hist2d(self): + fig, ax = plt.subplots() + ax.hist2d(...) + + @pytest.mark.xfail(reason="Test for hlines not written yet") + @mpl.style.context("default") + def test_hlines(self): + fig, ax = plt.subplots() + ax.hlines(...) + + @pytest.mark.xfail(reason="Test for imshow not written yet") + @mpl.style.context("default") + def test_imshow(self): + fig, ax = plt.subplots() + ax.imshow(...) + + @pytest.mark.xfail(reason="Test for loglog not written yet") + @mpl.style.context("default") + def test_loglog(self): + fig, ax = plt.subplots() + ax.loglog(...) + + @pytest.mark.xfail(reason="Test for magnitude_spectrum not written yet") + @mpl.style.context("default") + def test_magnitude_spectrum(self): + fig, ax = plt.subplots() + ax.magnitude_spectrum(...) + + @pytest.mark.xfail(reason="Test for matshow not written yet") + @mpl.style.context("default") + def test_matshow(self): + fig, ax = plt.subplots() + ax.matshow(...) + + @pytest.mark.xfail(reason="Test for pcolor not written yet") + @mpl.style.context("default") + def test_pcolor(self): + fig, ax = plt.subplots() + ax.pcolor(...) + + @pytest.mark.xfail(reason="Test for pcolorfast not written yet") + @mpl.style.context("default") + def test_pcolorfast(self): + fig, ax = plt.subplots() + ax.pcolorfast(...) + + @pytest.mark.xfail(reason="Test for pcolormesh not written yet") + @mpl.style.context("default") + def test_pcolormesh(self): + fig, ax = plt.subplots() + ax.pcolormesh(...) + + @pytest.mark.xfail(reason="Test for phase_spectrum not written yet") + @mpl.style.context("default") + def test_phase_spectrum(self): + fig, ax = plt.subplots() + ax.phase_spectrum(...) + + @pytest.mark.xfail(reason="Test for plot not written yet") + @mpl.style.context("default") + def test_plot(self): + fig, ax = plt.subplots() + ax.plot(...) + + @pytest.mark.xfail(reason="Test for plot_date not written yet") + @mpl.style.context("default") + def test_plot_date(self): + fig, ax = plt.subplots() + ax.plot_date(...) + + @pytest.mark.xfail(reason="Test for psd not written yet") + @mpl.style.context("default") + def test_psd(self): + fig, ax = plt.subplots() + ax.psd(...) + + @pytest.mark.xfail(reason="Test for quiver not written yet") + @mpl.style.context("default") + def test_quiver(self): + fig, ax = plt.subplots() + ax.quiver(...) + + @pytest.mark.xfail(reason="Test for quiverkey not written yet") + @mpl.style.context("default") + def test_quiverkey(self): + fig, ax = plt.subplots() + ax.quiverkey(...) + + @pytest.mark.xfail(reason="Test for scatter not written yet") + @mpl.style.context("default") + def test_scatter(self): + fig, ax = plt.subplots() + ax.scatter(...) + + @pytest.mark.xfail(reason="Test for semilogx not written yet") + @mpl.style.context("default") + def test_semilogx(self): + fig, ax = plt.subplots() + ax.semilogx(...) + + @pytest.mark.xfail(reason="Test for semilogy not written yet") + @mpl.style.context("default") + def test_semilogy(self): + fig, ax = plt.subplots() + ax.semilogy(...) + + @pytest.mark.xfail(reason="Test for specgram not written yet") + @mpl.style.context("default") + def test_specgram(self): + fig, ax = plt.subplots() + ax.specgram(...) + + @pytest.mark.xfail(reason="Test for spy not written yet") + @mpl.style.context("default") + def test_spy(self): + fig, ax = plt.subplots() + ax.spy(...) + + @pytest.mark.xfail(reason="Test for stackplot not written yet") + @mpl.style.context("default") + def test_stackplot(self): + fig, ax = plt.subplots() + ax.stackplot(...) + + @pytest.mark.xfail(reason="Test for stairs not written yet") + @mpl.style.context("default") + def test_stairs(self): + fig, ax = plt.subplots() + ax.stairs(...) + + @pytest.mark.xfail(reason="Test for stem not written yet") + @mpl.style.context("default") + def test_stem(self): + fig, ax = plt.subplots() + ax.stem(...) + + @pytest.mark.xfail(reason="Test for step not written yet") + @mpl.style.context("default") + def test_step(self): + fig, ax = plt.subplots() + ax.step(...) + + @pytest.mark.xfail(reason="Test for streamplot not written yet") + @mpl.style.context("default") + def test_streamplot(self): + fig, ax = plt.subplots() + ax.streamplot(...) + + @pytest.mark.xfail(reason="Test for table not written yet") + @mpl.style.context("default") + def test_table(self): + fig, ax = plt.subplots() + ax.table(...) + + @pytest.mark.xfail(reason="Test for text not written yet") + @mpl.style.context("default") + def test_text(self): + fig, ax = plt.subplots() + ax.text(...) + + @pytest.mark.xfail(reason="Test for tricontour not written yet") + @mpl.style.context("default") + def test_tricontour(self): + fig, ax = plt.subplots() + ax.tricontour(...) + + @pytest.mark.xfail(reason="Test for tricontourf not written yet") + @mpl.style.context("default") + def test_tricontourf(self): + fig, ax = plt.subplots() + ax.tricontourf(...) + + @pytest.mark.xfail(reason="Test for tripcolor not written yet") + @mpl.style.context("default") + def test_tripcolor(self): + fig, ax = plt.subplots() + ax.tripcolor(...) + + @pytest.mark.xfail(reason="Test for triplot not written yet") + @mpl.style.context("default") + def test_triplot(self): + fig, ax = plt.subplots() + ax.triplot(...) + + @pytest.mark.xfail(reason="Test for violin not written yet") + @mpl.style.context("default") + def test_violin(self): + fig, ax = plt.subplots() + ax.violin(...) + + @pytest.mark.xfail(reason="Test for violinplot not written yet") + @mpl.style.context("default") + def test_violinplot(self): + fig, ax = plt.subplots() + ax.violinplot(...) + + @pytest.mark.xfail(reason="Test for vlines not written yet") + @mpl.style.context("default") + def test_vlines(self): + fig, ax = plt.subplots() + ax.vlines(...) + + @pytest.mark.xfail(reason="Test for xcorr not written yet") + @mpl.style.context("default") + def test_xcorr(self): + fig, ax = plt.subplots() + ax.xcorr(...) From 193e6382366f756dc3e5e953c15339a7cdcbf00a Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 21 Sep 2023 13:58:44 -0400 Subject: [PATCH 04/10] issue: 26871 - Remove SimplePath class from patches.py which is deprecated timedeltas make sense --- lib/matplotlib/tests/test_datetime.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/matplotlib/tests/test_datetime.py b/lib/matplotlib/tests/test_datetime.py index fa6cee3916ff..e313c3bf9523 100644 --- a/lib/matplotlib/tests/test_datetime.py +++ b/lib/matplotlib/tests/test_datetime.py @@ -209,6 +209,12 @@ def test_matshow(self): fig, ax = plt.subplots() ax.matshow(...) + @pytest.mark.xfail(reason="Test for pie not written yet") + @mpl.style.context("default") + def test_pie(self): + fig, ax = plt.subplots() + ax.pcolor(...) + @pytest.mark.xfail(reason="Test for pcolor not written yet") @mpl.style.context("default") def test_pcolor(self): From 4a131025021b57f3dca295e6b15c5f7a760146c5 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 21 Sep 2023 13:06:40 -0400 Subject: [PATCH 05/10] TST: implement plot smoke test --- lib/matplotlib/tests/test_datetime.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/tests/test_datetime.py b/lib/matplotlib/tests/test_datetime.py index e313c3bf9523..53958229f174 100644 --- a/lib/matplotlib/tests/test_datetime.py +++ b/lib/matplotlib/tests/test_datetime.py @@ -1,3 +1,6 @@ +import datetime +import numpy as np + import pytest import matplotlib.pyplot as plt @@ -239,11 +242,15 @@ def test_phase_spectrum(self): fig, ax = plt.subplots() ax.phase_spectrum(...) - @pytest.mark.xfail(reason="Test for plot not written yet") @mpl.style.context("default") def test_plot(self): - fig, ax = plt.subplots() - ax.plot(...) + mpl.rcParams["date.converter"] = 'concise' + N = 6 + fig, (ax1, ax2, ax3) = plt.subplots(3, 1, layout='constrained') + x = np.array([datetime.datetime(2023, 9, n) for n in range(1, N)]) + ax1.plot(x, range(1, N)) + ax2.plot(range(1, N), x) + ax3.plot(x, x) @pytest.mark.xfail(reason="Test for plot_date not written yet") @mpl.style.context("default") From b506bfb3c501fa11b4cf8af35512684503249088 Mon Sep 17 00:00:00 2001 From: prateetishah Date: Fri, 22 Sep 2023 12:08:52 -0700 Subject: [PATCH 06/10] issue: 26871 - Remove SimplePath class which is deprecated since 3.7 --- doc/api/next_api_changes/removals/00001-ABC.rst | 7 ------- doc/api/next_api_changes/removals/26871-PS.rst | 3 +++ lib/matplotlib/patches.py | 5 ----- lib/matplotlib/patches.pyi | 4 ++-- 4 files changed, 5 insertions(+), 14 deletions(-) delete mode 100644 doc/api/next_api_changes/removals/00001-ABC.rst create mode 100644 doc/api/next_api_changes/removals/26871-PS.rst diff --git a/doc/api/next_api_changes/removals/00001-ABC.rst b/doc/api/next_api_changes/removals/00001-ABC.rst deleted file mode 100644 index 3cc5b6344f7f..000000000000 --- a/doc/api/next_api_changes/removals/00001-ABC.rst +++ /dev/null @@ -1,7 +0,0 @@ -Removal change template -~~~~~~~~~~~~~~~~~~~~~~~ - -Enter description of methods/classes removed here.... - -Please rename file with PR number and your initials i.e. "99999-ABC.rst" -and ``git add`` the new file. diff --git a/doc/api/next_api_changes/removals/26871-PS.rst b/doc/api/next_api_changes/removals/26871-PS.rst new file mode 100644 index 000000000000..438750354535 --- /dev/null +++ b/doc/api/next_api_changes/removals/26871-PS.rst @@ -0,0 +1,3 @@ +Remove Deprecated API +~~~~~~~~~~~~~~~~~~~~~~~ +``matplotlib.patches.SimplePath`` diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index f80df92c62fc..ba9fee2bc7e4 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -2708,11 +2708,6 @@ class _Base: helper methods. """ - @_api.deprecated("3.7") - class SimpleEvent: - def __init__(self, xy): - self.x, self.y = xy - def _in_patch(self, patch): """ Return a predicate function testing whether a point *xy* is diff --git a/lib/matplotlib/patches.pyi b/lib/matplotlib/patches.pyi index 29fe36aa6c6b..98a4cb58940d 100644 --- a/lib/matplotlib/patches.pyi +++ b/lib/matplotlib/patches.pyi @@ -455,8 +455,8 @@ class BoxStyle(_Style): class ConnectionStyle(_Style): class _Base(ConnectionStyle): - class SimpleEvent: - def __init__(self, xy: tuple[float, float]) -> None: ... + # class SimpleEvent: + # def __init__(self, xy: tuple[float, float]) -> None: ... def __call__( self, From 0820cb85b4c21e17bd616e883fe53a19073d5dd4 Mon Sep 17 00:00:00 2001 From: prateetishah Date: Fri, 22 Sep 2023 14:01:38 -0700 Subject: [PATCH 07/10] issue: 26871 - Remove SimplePath class from patches.py which is deprecated since 3.7 --- lib/matplotlib/patches.pyi | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/matplotlib/patches.pyi b/lib/matplotlib/patches.pyi index 98a4cb58940d..6a738c7cb779 100644 --- a/lib/matplotlib/patches.pyi +++ b/lib/matplotlib/patches.pyi @@ -455,8 +455,6 @@ class BoxStyle(_Style): class ConnectionStyle(_Style): class _Base(ConnectionStyle): - # class SimpleEvent: - # def __init__(self, xy: tuple[float, float]) -> None: ... def __call__( self, From eb07ba3f2673bcb1c87084d2f6e62640d1687916 Mon Sep 17 00:00:00 2001 From: prateetishah Date: Fri, 22 Sep 2023 14:50:04 -0700 Subject: [PATCH 08/10] issue: 26871 - Remove SimplePath class from patches.py which is deprecated since 3.7 --- doc/api/next_api_changes/removals/00001-ABC.rst | 6 ++++++ doc/api/next_api_changes/removals/26871-PS.rst | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 doc/api/next_api_changes/removals/00001-ABC.rst diff --git a/doc/api/next_api_changes/removals/00001-ABC.rst b/doc/api/next_api_changes/removals/00001-ABC.rst new file mode 100644 index 000000000000..aec841f40288 --- /dev/null +++ b/doc/api/next_api_changes/removals/00001-ABC.rst @@ -0,0 +1,6 @@ +Removal change template +~~~~~~~~~~~~~~~~~~~~~~~ + +Enter description of methods/classes removed here.... + +Please rename file with PR number and your initials i.e. "99999-ABC.rst" and git add the new file. diff --git a/doc/api/next_api_changes/removals/26871-PS.rst b/doc/api/next_api_changes/removals/26871-PS.rst index 438750354535..a5d06a482335 100644 --- a/doc/api/next_api_changes/removals/26871-PS.rst +++ b/doc/api/next_api_changes/removals/26871-PS.rst @@ -1,3 +1,3 @@ Remove Deprecated API ~~~~~~~~~~~~~~~~~~~~~~~ -``matplotlib.patches.SimplePath`` +``matplotlib.patches.ConnectionStyle._Base.SimpleEvent`` From 281c0556c9b59cfee37439c6b83428bf9bfe8a9b Mon Sep 17 00:00:00 2001 From: prateetishah Date: Fri, 22 Sep 2023 14:51:14 -0700 Subject: [PATCH 09/10] issue: 26871 - Remove SimplePath class from patches.py which is deprecated since 3.7 --- doc/api/next_api_changes/removals/00001-ABC.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/api/next_api_changes/removals/00001-ABC.rst b/doc/api/next_api_changes/removals/00001-ABC.rst index aec841f40288..a541e8924aa7 100644 --- a/doc/api/next_api_changes/removals/00001-ABC.rst +++ b/doc/api/next_api_changes/removals/00001-ABC.rst @@ -3,4 +3,5 @@ Removal change template Enter description of methods/classes removed here.... -Please rename file with PR number and your initials i.e. "99999-ABC.rst" and git add the new file. +Please rename file with PR number and your initials i.e. "99999-ABC.rst" +and git add the new file. From 23f641c269cbe0f8612d00f2cc07f62496aa79cf Mon Sep 17 00:00:00 2001 From: prateetishah Date: Fri, 22 Sep 2023 14:52:05 -0700 Subject: [PATCH 10/10] issue: 26871 - Remove SimplePath class from patches.py which is deprecated since 3.7 --- doc/api/next_api_changes/removals/00001-ABC.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/next_api_changes/removals/00001-ABC.rst b/doc/api/next_api_changes/removals/00001-ABC.rst index a541e8924aa7..3cc5b6344f7f 100644 --- a/doc/api/next_api_changes/removals/00001-ABC.rst +++ b/doc/api/next_api_changes/removals/00001-ABC.rst @@ -4,4 +4,4 @@ Removal change template Enter description of methods/classes removed here.... Please rename file with PR number and your initials i.e. "99999-ABC.rst" -and git add the new file. +and ``git add`` the new file.