Ho codice revisionato un pezzo di codice Python, ma per me sembra davvero brutto, hacky e complesso per qualcosa che può essere raggiunto molto facilmente.
Il codice ha un aspetto simile al seguente:
_extra.py
(questo dovrebbe essere un modulo privato a causa del carattere di sottolineatura):
import dependency
class Extra(dependency.Cls):
...
setup.py
setup(
...
name='somepkg',
extras_require={
...
'extra': ['dependency']})
public.py
_dist = pkg_resources.working_set.find(
pkg_resources.Requirement.parse('somepkg'))
if 'extra' in _dist:
from _extra import Extra
In modo che extras_require possa essere testato usando:
class ExtraTest(unittest.TestCase):
...
# Some test cases where the requirement actually is available
def test_require_extra(self):
dist = mock.Mock(pkg_resources.Distribution)
self.dist.extras = []
public = helper.import_or_reload('public')
with self.assertRaises(AttributeError):
public.Extra
Il mio pensiero iniziale sarebbe di non avere _extra.py
esistente e avere public.py
come:
try:
import dependency
except ImportError
pass
else:
class Extra(dependency.Cls):
...
Non mi interessa davvero che non sia testato che non possa essere importato se non è in extras_require
.
Il codice originale sembra una soluzione logica?
Il extras_require
dovrebbe essere testato in qualche modo? Se sì, come?