| Current Path : /var/node/inatote/Inatote-Backend/node_modules/snyk-python-plugin/pysrc/ |
| Current File : /var/node/inatote/Inatote-Backend/node_modules/snyk-python-plugin/pysrc/reqPackage.py |
import pkg_resources
import utils
from package import Package
class ReqPackage(Package):
"""Wrapper class for Requirements instance
:param obj: The `Requirements` instance to wrap over
:param dist: optional `pkg_resources.Distribution` instance for
this requirement
"""
UNKNOWN_VERSION = '?'
def __init__(self, obj, dist=None):
super(ReqPackage, self).__init__(obj)
self.dist = dist
@property
def version_spec(self):
specs = self._obj.specs
return ','.join([''.join(sp) for sp in specs]) if specs else None
@property
def installed_version(self):
if not self.dist:
return utils.guess_version(self.key, self.UNKNOWN_VERSION)
return self.dist.version
def is_conflicting(self):
"""If installed version conflicts with required version"""
# unknown installed version is also considered conflicting
if self.installed_version == self.UNKNOWN_VERSION:
return True
ver_spec = (self.version_spec if self.version_spec else '')
req_version_str = '{0}{1}'.format(self.project_name, ver_spec)
req_obj = pkg_resources.Requirement.parse(req_version_str)
return self.installed_version not in req_obj
def as_dict(self):
return {'key': self.key,
'package_name': self.project_name,
'installed_version': self.installed_version,
'required_version': self.version_spec}