Skip to content

Commit 5ddd7b4

Browse files
authored
Merge pull request #176 from stevenhua0320/deprecate-getParser
chore: deprecate getParser method across all parsers format.
2 parents 29ab7d8 + 810ef8a commit 5ddd7b4

File tree

13 files changed

+263
-14
lines changed

13 files changed

+263
-14
lines changed

news/deprecate-getParser.rst

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
**Added:**
2+
3+
* Added ``get_parser`` method in ``p_auto.py``
4+
* Added ``get_parser`` method in ``p_cif.py``
5+
* Added ``get_parser`` method in ``p_discus.py``
6+
* Added ``get_parser`` method in ``p_pdb.py``
7+
* Added ``get_parser`` method in ``p_pdffit.py``
8+
* Added ``get_parser`` method in ``p_rawxyz.py``
9+
* Added ``get_parser`` method in ``p_xcfg.py``
10+
* Added ``get_parser`` method in ``p_xyz.py``
11+
* Added ``get_parser`` method in ``parsers/__init__.py``
12+
13+
**Changed:**
14+
15+
* <news item>
16+
17+
**Deprecated:**
18+
19+
* Deprecated ``getParser`` method in ``p_auto.py`` for removal in version 4.0.0
20+
* Deprecated ``getParser`` method in ``p_cif.py`` for removal in version 4.0.0
21+
* Deprecated ``getParser`` method in ``p_discus.py`` for removal in version 4.0.0
22+
* Deprecated ``getParser`` method in ``p_pdb.py`` for removal in version 4.0.0
23+
* Deprecated ``getParser`` method in ``p_pdffit.py`` for removal in version 4.0.0
24+
* Deprecated ``getParser`` method in ``p_rawxyz.py`` for removal in version 4.0.0
25+
* Deprecated ``getParser`` method in ``p_xcfg.py`` for removal in version 4.0.0
26+
* Deprecated ``getParser`` method in ``p_xyz.py`` for removal in version 4.0.0
27+
* Deprecated ``getParser`` method in ``parsers/__init__.py`` for removal in version 4.0.0
28+
29+
**Removed:**
30+
31+
* <news item>
32+
33+
**Fixed:**
34+
35+
* <news item>
36+
37+
**Security:**
38+
39+
* <news item>

src/diffpy/structure/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import diffpy.structure as _structure
4040
from diffpy.structure.atom import Atom
4141
from diffpy.structure.lattice import Lattice
42-
from diffpy.structure.parsers import getParser
42+
from diffpy.structure.parsers import get_parser
4343
from diffpy.structure.pdffitstructure import PDFFitStructure
4444
from diffpy.structure.structure import Structure
4545
from diffpy.structure.structureerrors import LatticeError, StructureFormatError, SymmetryError
@@ -97,7 +97,7 @@ def loadStructure(filename, fmt="auto", **kw):
9797
and 'discus' formats.
9898
"""
9999

100-
p = getParser(fmt, **kw)
100+
p = get_parser(fmt, **kw)
101101
rv = p.parse_file(filename)
102102
return rv
103103

src/diffpy/structure/parsers/__init__.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,48 @@
3333
from diffpy.structure.parsers.parser_index_mod import parser_index
3434
from diffpy.structure.parsers.structureparser import StructureParser
3535
from diffpy.structure.structureerrors import StructureFormatError
36+
from diffpy.utils._deprecator import build_deprecation_message, deprecated
3637

3738
# silence pyflakes checker
3839
assert StructureParser
3940

41+
parsers_base = "diffpy.structure"
42+
removal_version = "4.0.0"
43+
getParser_deprecation_msg = build_deprecation_message(
44+
parsers_base,
45+
"getParser",
46+
"get_parser",
47+
removal_version,
48+
)
4049

50+
51+
@deprecated(getParser_deprecation_msg)
4152
def getParser(format, **kw):
4253
"""Return Parser instance for a given structure format.
4354
55+
Parameters
56+
----------
57+
format : str
58+
String with the format name, see `parser_index_mod`.
59+
**kw : dict
60+
Keyword arguments passed to the Parser init function.
61+
62+
Returns
63+
-------
64+
Parser
65+
Parser instance for the given format.
66+
67+
Raises
68+
------
69+
StructureFormatError
70+
When the format is not defined.
71+
"""
72+
return get_parser(format, **kw)
73+
74+
75+
def get_parser(format, **kw):
76+
"""Return Parser instance for a given structure format.
77+
4478
Parameters
4579
----------
4680
format : str
@@ -65,7 +99,7 @@ def getParser(format, **kw):
6599
ns = {}
66100
import_cmd = "from diffpy.structure.parsers import %s as pm" % pmod
67101
exec(import_cmd, ns)
68-
return ns["pm"].getParser(**kw)
102+
return ns["pm"].get_parser(**kw)
69103

70104

71105
def inputFormats():

src/diffpy/structure/parsers/p_auto.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,14 +206,14 @@ def _wrap_parse_method(self, method: object, *args: object, **kwargs: object) ->
206206
------
207207
StructureFormatError
208208
"""
209-
from diffpy.structure.parsers import getParser
209+
from diffpy.structure.parsers import get_parser
210210

211211
ofmts = self._get_ordered_formats()
212212
stru = None
213213
# try all parsers in sequence
214214
parsers_emsgs = []
215215
for fmt in ofmts:
216-
p = getParser(fmt, **self.pkw)
216+
p = get_parser(fmt, **self.pkw)
217217
try:
218218
pmethod = getattr(p, method)
219219
stru = pmethod(*args, **kwargs)
@@ -240,10 +240,36 @@ def _wrap_parse_method(self, method: object, *args: object, **kwargs: object) ->
240240

241241
# Routines -------------------------------------------------------------------
242242

243+
parsers_base = "diffpy.structure"
244+
removal_version = "4.0.0"
245+
getParser_deprecation_msg = build_deprecation_message(
246+
parsers_base,
247+
"getParser",
248+
"get_parser",
249+
removal_version,
250+
)
243251

252+
253+
@deprecated(getParser_deprecation_msg)
244254
def getParser(**kw):
245255
"""Return a new instance of the automatic parser.
246256
257+
Parameters
258+
----------
259+
**kw : dict
260+
Keyword arguments for the structure parser
261+
262+
Returns
263+
-------
264+
P_auto
265+
Instance of `P_auto`.
266+
"""
267+
return get_parser(**kw)
268+
269+
270+
def get_parser(**kw):
271+
"""Return a new instance of the automatic parser.
272+
247273
Parameters
248274
----------
249275
**kw : dict

src/diffpy/structure/parsers/p_cif.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,13 @@ def to_lines(self, stru):
817817

818818
# Routines -------------------------------------------------------------------
819819

820+
parsers_base = "diffpy.structure"
821+
getParser_deprecation_msg = build_deprecation_message(
822+
parsers_base,
823+
"getParser",
824+
"get_parser",
825+
removal_version,
826+
)
820827
# constant regular expression for leading_float()
821828
rx_float = re.compile(r"[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?")
822829

@@ -901,9 +908,27 @@ def getSymOp(s):
901908
return rv
902909

903910

911+
@deprecated(getParser_deprecation_msg)
904912
def getParser(eps=None):
905913
"""Return new `parser` object for CIF format.
906914
915+
Parameters
916+
----------
917+
eps : float, Optional
918+
fractional coordinates cutoff for duplicate positions.
919+
When ``None`` use the default for `ExpandAsymmetricUnit`: ``1.0e-5``.
920+
921+
Returns
922+
-------
923+
P_cif
924+
Instance of `P_cif`.
925+
"""
926+
return get_parser(eps)
927+
928+
929+
def get_parser(eps=None):
930+
"""Return new `parser` object for CIF format.
931+
907932
Parameters
908933
----------
909934
eps : float, Optional

src/diffpy/structure/parsers/p_discus.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,10 +412,31 @@ def _parse_not_implemented(self, words):
412412

413413
# Routines -------------------------------------------------------------------
414414

415+
parsers_base = "diffpy.structure"
416+
removal_version = "4.0.0"
417+
getParser_deprecation_msg = build_deprecation_message(
418+
parsers_base,
419+
"getParser",
420+
"get_parser",
421+
removal_version,
422+
)
423+
415424

425+
@deprecated(getParser_deprecation_msg)
416426
def getParser():
417427
"""Return new `parser` object for DISCUS format.
418428
429+
Returns
430+
-------
431+
P_discus
432+
Instance of `P_discus`.
433+
"""
434+
return get_parser()
435+
436+
437+
def get_parser():
438+
"""Return new `parser` object for DISCUS format.
439+
419440
Returns
420441
-------
421442
P_discus

src/diffpy/structure/parsers/p_pdb.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,10 +454,30 @@ def to_lines(self, stru):
454454

455455
# Routines -------------------------------------------------------------------
456456

457+
parsers_base = "diffpy.structure"
458+
getParser_deprecation_msg = build_deprecation_message(
459+
parsers_base,
460+
"getParser",
461+
"get_parser",
462+
removal_version,
463+
)
464+
457465

466+
@deprecated(getParser_deprecation_msg)
458467
def getParser():
459468
"""Return new `parser` object for PDB format.
460469
470+
Returns
471+
-------
472+
P_pdb
473+
Instance of `P_pdb`.
474+
"""
475+
return get_parser()
476+
477+
478+
def get_parser():
479+
"""Return new `parser` object for PDB format.
480+
461481
Returns
462482
-------
463483
P_pdb

src/diffpy/structure/parsers/p_pdffit.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,17 @@ def _parse_shape(self, line):
388388
def getParser():
389389
"""Return new `parser` object for PDFfit format.
390390
391+
Returns
392+
-------
393+
P_pdffit
394+
Instance of `P_pdffit`.
395+
"""
396+
return get_parser()
397+
398+
399+
def get_parser():
400+
"""Return new `parser` object for PDFfit format.
401+
391402
Returns
392403
-------
393404
P_pdffit

src/diffpy/structure/parsers/p_rawxyz.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,30 @@ def to_lines(self, stru):
170170

171171
# Routines -------------------------------------------------------------------
172172

173+
parsers_base = "diffpy.structure"
174+
getParser_deprecation_msg = build_deprecation_message(
175+
parsers_base,
176+
"getParser",
177+
"get_parser",
178+
removal_version,
179+
)
180+
173181

182+
@deprecated(getParser_deprecation_msg)
174183
def getParser():
175184
"""Return new `parser` object for RAWXYZ format.
176185
186+
Returns
187+
-------
188+
P_rawxyz
189+
Instance of `P_rawxyz`.
190+
"""
191+
return get_parser()
192+
193+
194+
def get_parser():
195+
"""Return new `parser` object for RAWXYZ format.
196+
177197
Returns
178198
-------
179199
P_rawxyz

src/diffpy/structure/parsers/p_xcfg.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,10 +447,30 @@ def to_lines(self, stru):
447447

448448
# Routines -------------------------------------------------------------------
449449

450+
parsers_base = "diffpy.structure"
451+
getParser_deprecation_msg = build_deprecation_message(
452+
parsers_base,
453+
"getParser",
454+
"get_parser",
455+
removal_version,
456+
)
457+
450458

459+
@deprecated(getParser_deprecation_msg)
451460
def getParser():
452461
"""Return new `parser` object for XCFG format.
453462
463+
Returns
464+
-------
465+
P_xcfg
466+
Instance of `P_xcfg`.
467+
"""
468+
return get_parser()
469+
470+
471+
def get_parser():
472+
"""Return new `parser` object for XCFG format.
473+
454474
Returns
455475
-------
456476
P_xcfg

0 commit comments

Comments
 (0)