More pylint improvements
This commit is contained in:
parent
72d0d46535
commit
e85af204dd
@ -93,7 +93,7 @@ class Address(SecondaryObject, PrivacyBase, CitationBase, NoteBase, DateBase,
|
|||||||
"note_list": NoteBase.to_struct(self),
|
"note_list": NoteBase.to_struct(self),
|
||||||
"date": DateBase.to_struct(self),
|
"date": DateBase.to_struct(self),
|
||||||
"location": LocationBase.to_struct(self)
|
"location": LocationBase.to_struct(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_struct(cls, struct):
|
def from_struct(cls, struct):
|
||||||
@ -108,7 +108,7 @@ class Address(SecondaryObject, PrivacyBase, CitationBase, NoteBase, DateBase,
|
|||||||
NoteBase.from_struct(struct.get("note_list", default.note_list)),
|
NoteBase.from_struct(struct.get("note_list", default.note_list)),
|
||||||
DateBase.from_struct(struct.get("date", {})),
|
DateBase.from_struct(struct.get("date", {})),
|
||||||
LocationBase.from_struct(struct.get("location", {}))
|
LocationBase.from_struct(struct.get("location", {}))
|
||||||
)
|
)
|
||||||
|
|
||||||
def unserialize(self, data):
|
def unserialize(self, data):
|
||||||
"""
|
"""
|
||||||
|
@ -55,7 +55,7 @@ class AttributeRootBase(object):
|
|||||||
"""
|
"""
|
||||||
if source:
|
if source:
|
||||||
self.attribute_list = [self._CLASS(attribute)
|
self.attribute_list = [self._CLASS(attribute)
|
||||||
for attribute in source.attribute_list]
|
for attribute in source.attribute_list]
|
||||||
else:
|
else:
|
||||||
self.attribute_list = []
|
self.attribute_list = []
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ CitationBase class for Gramps.
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
import logging
|
import logging
|
||||||
LOG = logging.getLogger(".citation")
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -39,6 +38,8 @@ LOG = logging.getLogger(".citation")
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from .handle import Handle
|
from .handle import Handle
|
||||||
|
|
||||||
|
LOG = logging.getLogger(".citation")
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# CitationBase class
|
# CitationBase class
|
||||||
@ -138,7 +139,7 @@ class CitationBase(object):
|
|||||||
:type handle: list
|
:type handle: list
|
||||||
"""
|
"""
|
||||||
LOG.debug('enter remove_citation handle: %s self: %s citation_list: %s'
|
LOG.debug('enter remove_citation handle: %s self: %s citation_list: %s'
|
||||||
% (citation_handle_list, self, self.citation_list))
|
% (citation_handle_list, self, self.citation_list))
|
||||||
for handle in citation_handle_list:
|
for handle in citation_handle_list:
|
||||||
if handle in self.citation_list:
|
if handle in self.citation_list:
|
||||||
LOG.debug('remove handle %s from citation_list %s' %
|
LOG.debug('remove handle %s from citation_list %s' %
|
||||||
|
@ -46,7 +46,7 @@ from .handle import Handle
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class EventRef(PrivacyBase, NoteBase, AttributeBase, RefBase,
|
class EventRef(PrivacyBase, NoteBase, AttributeBase, RefBase,
|
||||||
IndirectCitationBase, SecondaryObject):
|
IndirectCitationBase, SecondaryObject):
|
||||||
"""
|
"""
|
||||||
Event reference class.
|
Event reference class.
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ class EventRef(PrivacyBase, NoteBase, AttributeBase, RefBase,
|
|||||||
AttributeBase.__init__(self, source)
|
AttributeBase.__init__(self, source)
|
||||||
RefBase.__init__(self, source)
|
RefBase.__init__(self, source)
|
||||||
if source:
|
if source:
|
||||||
self.__role = EventRoleType(source.__role)
|
self.__role = EventRoleType(source.role)
|
||||||
else:
|
else:
|
||||||
self.__role = EventRoleType()
|
self.__role = EventRoleType()
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class GenderStats(object):
|
|||||||
This allows the tracking of the liklihood of a person's given name
|
This allows the tracking of the liklihood of a person's given name
|
||||||
indicating the gender of the person.
|
indicating the gender of the person.
|
||||||
"""
|
"""
|
||||||
def __init__ (self, stats={}):
|
def __init__(self, stats=None):
|
||||||
if stats is None:
|
if stats is None:
|
||||||
self.stats = {}
|
self.stats = {}
|
||||||
else:
|
else:
|
||||||
@ -56,42 +56,35 @@ class GenderStats(object):
|
|||||||
self.stats = {}
|
self.stats = {}
|
||||||
return self.stats
|
return self.stats
|
||||||
|
|
||||||
def _get_key (self, person):
|
def name_stats(self, name):
|
||||||
name = person.get_primary_name().get_first_name()
|
|
||||||
return self._get_key_from_name (name)
|
|
||||||
|
|
||||||
def _get_key_from_name (self, name):
|
|
||||||
return name.split (' ')[0].replace ('?', '')
|
|
||||||
|
|
||||||
def name_stats (self, name):
|
|
||||||
if name in self.stats:
|
if name in self.stats:
|
||||||
return self.stats[name]
|
return self.stats[name]
|
||||||
return (0, 0, 0)
|
return (0, 0, 0)
|
||||||
|
|
||||||
def count_name (self, name, gender):
|
def count_name(self, name, gender):
|
||||||
"""
|
"""
|
||||||
Count a given name under gender in the gender stats.
|
Count a given name under gender in the gender stats.
|
||||||
"""
|
"""
|
||||||
keyname = self._get_key_from_name(name)
|
keyname = _get_key_from_name(name)
|
||||||
if not keyname:
|
if not keyname:
|
||||||
return
|
return
|
||||||
|
|
||||||
self._set_stats(keyname, gender)
|
self._set_stats(keyname, gender)
|
||||||
|
|
||||||
def count_person (self, person, undo = 0):
|
def count_person(self, person, undo=0):
|
||||||
if not person:
|
if not person:
|
||||||
return
|
return
|
||||||
# Let the Person do their own counting later
|
# Let the Person do their own counting later
|
||||||
|
|
||||||
keyname = self._get_key (person)
|
keyname = _get_key(person)
|
||||||
if not keyname:
|
if not keyname:
|
||||||
return
|
return
|
||||||
|
|
||||||
gender = person.get_gender()
|
gender = person.get_gender()
|
||||||
self._set_stats(keyname, gender, undo)
|
self._set_stats(keyname, gender, undo)
|
||||||
|
|
||||||
def _set_stats (self, keyname, gender, undo=0):
|
def _set_stats(self, keyname, gender, undo=0):
|
||||||
(male, female, unknown) = self.name_stats (keyname)
|
(male, female, unknown) = self.name_stats(keyname)
|
||||||
if not undo:
|
if not undo:
|
||||||
increment = 1
|
increment = 1
|
||||||
else:
|
else:
|
||||||
@ -112,11 +105,11 @@ class GenderStats(object):
|
|||||||
|
|
||||||
self.stats[keyname] = (male, female, unknown)
|
self.stats[keyname] = (male, female, unknown)
|
||||||
|
|
||||||
def uncount_person (self, person):
|
def uncount_person(self, person):
|
||||||
return self.count_person (person, undo = 1)
|
return self.count_person(person, undo=1)
|
||||||
|
|
||||||
def guess_gender (self, name):
|
def guess_gender(self, name):
|
||||||
name = self._get_key_from_name (name)
|
name = _get_key_from_name(name)
|
||||||
if not name or name not in self.stats:
|
if not name or name not in self.stats:
|
||||||
return Person.UNKNOWN
|
return Person.UNKNOWN
|
||||||
|
|
||||||
@ -134,3 +127,10 @@ class GenderStats(object):
|
|||||||
return Person.FEMALE
|
return Person.FEMALE
|
||||||
|
|
||||||
return Person.UNKNOWN
|
return Person.UNKNOWN
|
||||||
|
|
||||||
|
def _get_key(person):
|
||||||
|
name = person.get_primary_name().get_first_name()
|
||||||
|
return _get_key_from_name(name)
|
||||||
|
|
||||||
|
def _get_key_from_name(name):
|
||||||
|
return name.split(' ')[0].replace('?', '')
|
||||||
|
@ -54,7 +54,7 @@ class LdsOrdBase(object):
|
|||||||
|
|
||||||
if source:
|
if source:
|
||||||
self.lds_ord_list = [LdsOrd(lds_ord)
|
self.lds_ord_list = [LdsOrd(lds_ord)
|
||||||
for lds_ord in source.lds_ord_list]
|
for lds_ord in source.lds_ord_list]
|
||||||
else:
|
else:
|
||||||
self.lds_ord_list = []
|
self.lds_ord_list = []
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ class MediaBase(object):
|
|||||||
else:
|
else:
|
||||||
self.media_list.append(addendum)
|
self.media_list.append(addendum)
|
||||||
|
|
||||||
def has_media_reference(self, obj_handle) :
|
def has_media_reference(self, obj_handle):
|
||||||
"""
|
"""
|
||||||
Return True if the object or any of it's child objects has reference
|
Return True if the object or any of it's child objects has reference
|
||||||
to this media object handle.
|
to this media object handle.
|
||||||
@ -167,7 +167,7 @@ class MediaBase(object):
|
|||||||
:type obj_handle_list: list
|
:type obj_handle_list: list
|
||||||
"""
|
"""
|
||||||
new_media_list = [media_ref for media_ref in self.media_list
|
new_media_list = [media_ref for media_ref in self.media_list
|
||||||
if media_ref.ref not in obj_handle_list]
|
if media_ref.ref not in obj_handle_list]
|
||||||
self.media_list = new_media_list
|
self.media_list = new_media_list
|
||||||
|
|
||||||
def replace_media_references(self, old_handle, new_handle):
|
def replace_media_references(self, old_handle, new_handle):
|
||||||
@ -180,7 +180,7 @@ class MediaBase(object):
|
|||||||
:param new_handle: The media handle to replace the old one with.
|
:param new_handle: The media handle to replace the old one with.
|
||||||
:type new_handle: str
|
:type new_handle: str
|
||||||
"""
|
"""
|
||||||
refs_list = [ media_ref.ref for media_ref in self.media_list ]
|
refs_list = [media_ref.ref for media_ref in self.media_list]
|
||||||
new_ref = None
|
new_ref = None
|
||||||
if new_handle in refs_list:
|
if new_handle in refs_list:
|
||||||
new_ref = self.media_list[refs_list.index(new_handle)]
|
new_ref = self.media_list[refs_list.index(new_handle)]
|
||||||
|
@ -96,7 +96,7 @@ class MediaRef(SecondaryObject, PrivacyBase, CitationBase, NoteBase, RefBase,
|
|||||||
"note_list": NoteBase.to_struct(self),
|
"note_list": NoteBase.to_struct(self),
|
||||||
"attribute_list": AttributeBase.to_struct(self),
|
"attribute_list": AttributeBase.to_struct(self),
|
||||||
"ref": Handle("Media", self.ref),
|
"ref": Handle("Media", self.ref),
|
||||||
"rect": self.rect if self.rect != (0,0,0,0) else None}
|
"rect": self.rect if self.rect != (0, 0, 0, 0) else None}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_struct(cls, struct):
|
def from_struct(cls, struct):
|
||||||
@ -107,9 +107,12 @@ class MediaRef(SecondaryObject, PrivacyBase, CitationBase, NoteBase, RefBase,
|
|||||||
"""
|
"""
|
||||||
default = MediaRef()
|
default = MediaRef()
|
||||||
return (PrivacyBase.from_struct(struct.get("private", default.private)),
|
return (PrivacyBase.from_struct(struct.get("private", default.private)),
|
||||||
CitationBase.from_struct(struct.get("citation_list", default.citation_list)),
|
CitationBase.from_struct(struct.get("citation_list",
|
||||||
NoteBase.from_struct(struct.get("note_list", default.note_list)),
|
default.citation_list)),
|
||||||
AttributeBase.from_struct(struct.get("attribute_list", default.attribute_list)),
|
NoteBase.from_struct(struct.get("note_list",
|
||||||
|
default.note_list)),
|
||||||
|
AttributeBase.from_struct(struct.get("attribute_list",
|
||||||
|
default.attribute_list)),
|
||||||
RefBase.from_struct(struct.get("ref", default.ref)),
|
RefBase.from_struct(struct.get("ref", default.ref)),
|
||||||
struct.get("rect", default.rect))
|
struct.get("rect", default.rect))
|
||||||
|
|
||||||
@ -117,7 +120,8 @@ class MediaRef(SecondaryObject, PrivacyBase, CitationBase, NoteBase, RefBase,
|
|||||||
"""
|
"""
|
||||||
Convert a serialized tuple of data to an object.
|
Convert a serialized tuple of data to an object.
|
||||||
"""
|
"""
|
||||||
(privacy, citation_list, note_list,attribute_list,ref,self.rect) = data
|
(privacy, citation_list, note_list, attribute_list, ref,
|
||||||
|
self.rect) = data
|
||||||
PrivacyBase.unserialize(self, privacy)
|
PrivacyBase.unserialize(self, privacy)
|
||||||
CitationBase.unserialize(self, citation_list)
|
CitationBase.unserialize(self, citation_list)
|
||||||
NoteBase.unserialize(self, note_list)
|
NoteBase.unserialize(self, note_list)
|
||||||
|
@ -57,11 +57,11 @@ class Name(SecondaryObject, PrivacyBase, SurnameBase, CitationBase, NoteBase,
|
|||||||
object stores one of them
|
object stores one of them
|
||||||
"""
|
"""
|
||||||
|
|
||||||
DEF = 0 # Default format (determined by gramps-wide prefs)
|
DEF = 0 # Default format (determined by gramps-wide prefs)
|
||||||
LNFN = 1 # last name first name
|
LNFN = 1 # last name first name
|
||||||
FNLN = 2 # first name last name
|
FNLN = 2 # first name last name
|
||||||
FN = 4 # first name
|
FN = 4 # first name
|
||||||
LNFNP= 5 # primary name primconnector rest, given pa/ma suffix, primprefix
|
LNFNP = 5 # primary name primconnector rest, given pa/ma suffix, primprefix
|
||||||
|
|
||||||
NAMEFORMATS = (DEF, LNFN, FNLN, FN, LNFNP)
|
NAMEFORMATS = (DEF, LNFN, FNLN, FN, LNFNP)
|
||||||
#deprecated :
|
#deprecated :
|
||||||
@ -175,11 +175,14 @@ class Name(SecondaryObject, PrivacyBase, SurnameBase, CitationBase, NoteBase,
|
|||||||
"""
|
"""
|
||||||
default = Name()
|
default = Name()
|
||||||
return (PrivacyBase.from_struct(struct.get("private", default.private)),
|
return (PrivacyBase.from_struct(struct.get("private", default.private)),
|
||||||
CitationBase.from_struct(struct.get("citation_list", default.citation_list)),
|
CitationBase.from_struct(struct.get("citation_list",
|
||||||
NoteBase.from_struct(struct.get("note_list", default.note_list)),
|
default.citation_list)),
|
||||||
|
NoteBase.from_struct(struct.get("note_list",
|
||||||
|
default.note_list)),
|
||||||
DateBase.from_struct(struct.get("date", {})),
|
DateBase.from_struct(struct.get("date", {})),
|
||||||
struct.get("first_name", default.first_name),
|
struct.get("first_name", default.first_name),
|
||||||
SurnameBase.from_struct(struct.get("surname_list", default.surname_list)),
|
SurnameBase.from_struct(struct.get("surname_list",
|
||||||
|
default.surname_list)),
|
||||||
struct.get("suffix", default.suffix),
|
struct.get("suffix", default.suffix),
|
||||||
struct.get("title", default.title),
|
struct.get("title", default.title),
|
||||||
NameType.from_struct(struct.get("type", {})),
|
NameType.from_struct(struct.get("type", {})),
|
||||||
@ -237,10 +240,12 @@ class Name(SecondaryObject, PrivacyBase, SurnameBase, CitationBase, NoteBase,
|
|||||||
Indicate if the name is empty.
|
Indicate if the name is empty.
|
||||||
"""
|
"""
|
||||||
namefieldsempty = (self.first_name == "" and
|
namefieldsempty = (self.first_name == "" and
|
||||||
self.suffix == "" and self.title == "" and self.nick == ""
|
self.suffix == "" and
|
||||||
and self.famnick == "")
|
self.title == "" and
|
||||||
surnamefieldsempty = not (False in
|
self.nick == "" and
|
||||||
[surn.is_empty() for surn in self.surname_list])
|
self.famnick == "")
|
||||||
|
surnamefieldsempty = False not in [surn.is_empty()
|
||||||
|
for surn in self.surname_list]
|
||||||
return namefieldsempty and surnamefieldsempty
|
return namefieldsempty and surnamefieldsempty
|
||||||
|
|
||||||
def unserialize(self, data):
|
def unserialize(self, data):
|
||||||
@ -536,7 +541,7 @@ class Name(SecondaryObject, PrivacyBase, SurnameBase, CitationBase, NoteBase,
|
|||||||
"""
|
"""
|
||||||
first = self.first_name
|
first = self.first_name
|
||||||
surname = self.get_surname()
|
surname = self.get_surname()
|
||||||
if (self.suffix == ""):
|
if self.suffix == "":
|
||||||
return "%s %s" % (first, surname)
|
return "%s %s" % (first, surname)
|
||||||
else:
|
else:
|
||||||
# translators: needed for Arabic, ignore otherwise
|
# translators: needed for Arabic, ignore otherwise
|
||||||
@ -569,7 +574,6 @@ class Name(SecondaryObject, PrivacyBase, SurnameBase, CitationBase, NoteBase,
|
|||||||
firstname = self.first_name.strip()
|
firstname = self.first_name.strip()
|
||||||
surname = self.get_surname().replace('/', '?')
|
surname = self.get_surname().replace('/', '?')
|
||||||
suffix = self.suffix
|
suffix = self.suffix
|
||||||
title = self.title
|
|
||||||
if suffix == "":
|
if suffix == "":
|
||||||
return '%s /%s/' % (firstname, surname)
|
return '%s /%s/' % (firstname, surname)
|
||||||
else:
|
else:
|
||||||
|
@ -31,7 +31,6 @@ Place name class for Gramps
|
|||||||
from .secondaryobj import SecondaryObject
|
from .secondaryobj import SecondaryObject
|
||||||
from .datebase import DateBase
|
from .datebase import DateBase
|
||||||
from .const import IDENTICAL, EQUAL, DIFFERENT
|
from .const import IDENTICAL, EQUAL, DIFFERENT
|
||||||
from .handle import Handle
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -191,8 +190,8 @@ class PlaceName(SecondaryObject, DateBase):
|
|||||||
:rtype: int
|
:rtype: int
|
||||||
"""
|
"""
|
||||||
if (self.value != other.value or
|
if (self.value != other.value or
|
||||||
self.date != other.date or
|
self.date != other.date or
|
||||||
self.lang != other.lang):
|
self.lang != other.lang):
|
||||||
return DIFFERENT
|
return DIFFERENT
|
||||||
else:
|
else:
|
||||||
if self.is_equal(other):
|
if self.is_equal(other):
|
||||||
|
@ -110,7 +110,7 @@ class Researcher(LocationBase):
|
|||||||
struct.get("postal", default.postal),
|
struct.get("postal", default.postal),
|
||||||
struct.get("phone", default.phone),
|
struct.get("phone", default.phone),
|
||||||
struct.get("name", default.name),
|
struct.get("name", default.name),
|
||||||
struct.get("address", default.address),
|
struct.get("address", default.addr),
|
||||||
struct.get("email", default.email))
|
struct.get("email", default.email))
|
||||||
|
|
||||||
def unserialize(self, data):
|
def unserialize(self, data):
|
||||||
@ -159,17 +159,17 @@ class Researcher(LocationBase):
|
|||||||
|
|
||||||
self.name = other_researcher.name
|
self.name = other_researcher.name
|
||||||
self.addr = other_researcher.addr
|
self.addr = other_researcher.addr
|
||||||
self.email = other_researcher.email
|
self.email = other_researcher.email
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
return [getattr(self, value) for value in
|
return [getattr(self, value) for value in
|
||||||
['name', 'addr', 'locality', 'city', 'state',
|
['name', 'addr', 'locality', 'city', 'state',
|
||||||
'country', 'postal', 'phone', 'email']
|
'country', 'postal', 'phone', 'email']
|
||||||
]
|
]
|
||||||
|
|
||||||
def is_empty(self):
|
def is_empty(self):
|
||||||
for attr in ['name', 'addr', 'locality', 'city', 'state',
|
for attr in ['name', 'addr', 'locality', 'city', 'state',
|
||||||
'country', 'postal', 'phone', 'email']:
|
'country', 'postal', 'phone', 'email']:
|
||||||
if getattr(self, attr) != "":
|
if getattr(self, attr) != "":
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
@ -27,13 +27,8 @@ Source Attribute class for GRAMPS.
|
|||||||
# Gramps modules
|
# Gramps modules
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from .secondaryobj import SecondaryObject
|
|
||||||
from .privacybase import PrivacyBase
|
|
||||||
from .citationbase import CitationBase
|
|
||||||
from .notebase import NoteBase
|
|
||||||
from .attribute import AttributeRoot
|
from .attribute import AttributeRoot
|
||||||
from .srcattrtype import SrcAttributeType
|
from .srcattrtype import SrcAttributeType
|
||||||
from .const import IDENTICAL, EQUAL, DIFFERENT
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -22,9 +22,6 @@
|
|||||||
SurnameBase class for Gramps.
|
SurnameBase class for Gramps.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from ..const import GRAMPS_LOCALE as glocale
|
|
||||||
_ = glocale.translation.gettext
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Gramps modules
|
# Gramps modules
|
||||||
@ -32,6 +29,8 @@ _ = glocale.translation.gettext
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from .surname import Surname
|
from .surname import Surname
|
||||||
from .const import IDENTICAL, EQUAL
|
from .const import IDENTICAL, EQUAL
|
||||||
|
from ..const import GRAMPS_LOCALE as glocale
|
||||||
|
_ = glocale.translation.gettext
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -182,7 +182,7 @@ class Url(SecondaryObject, PrivacyBase):
|
|||||||
def are_equal(self, other):
|
def are_equal(self, other):
|
||||||
"""Deprecated - use :meth:`~.SecondaryObject.is_equal` instead."""
|
"""Deprecated - use :meth:`~.SecondaryObject.is_equal` instead."""
|
||||||
|
|
||||||
warn( "Use is_equal instead of are_equal", DeprecationWarning, 2)
|
warn("Use is_equal instead of are_equal", DeprecationWarning, 2)
|
||||||
return self.is_equal(other)
|
return self.is_equal(other)
|
||||||
|
|
||||||
def parse_path(self):
|
def parse_path(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user