11from __future__ import print_function
22
33import re
4- import pkg_resources
54import os
65import shutil
76import sys
87import glob
8+ import importlib .metadata
9+ import importlib .util
10+
911
1012from gearbox .template import GearBoxTemplate
1113from gearbox .command import Command
@@ -147,17 +149,16 @@ def take_action(self, opts):
147149
148150 opts .database = opts .sqlalchemy or opts .ming
149151
150- opts .name = pkg_resources . safe_name (opts .name )
152+ opts .name = safe_name (opts .name )
151153 opts .project = opts .name
152154
153- env = pkg_resources . Environment ()
154- if opts . name . lower () in env :
155- print ( 'The name "%s" is already in use by' % opts . name )
156- for dist in env [ opts . name ]:
157- print ( dist )
158- return
155+ try :
156+ importlib . metadata . metadata ( opts . name )
157+ except importlib . metadata . PackageNotFoundError :
158+ pass
159+ else :
160+ print ( 'The name "%s" is already in use' % opts . name )
159161
160- import importlib .util
161162 try :
162163 if importlib .util .find_spec (opts .package ):
163164 print ('The package name "%s" is already in use'
@@ -265,3 +266,11 @@ def overwrite_templates(template_type):
265266 # remove existing migrations directory
266267 package_migrations_dir = os .path .abspath ('migration' )
267268 shutil .rmtree (package_migrations_dir , ignore_errors = True )
269+
270+
271+ def safe_name (name : str ) -> str :
272+ """Convert an arbitrary string to a standard distribution name
273+
274+ from setuptools.pkg_resources.safe_name
275+ """
276+ return re .sub ('[^A-Za-z0-9.]+' , '-' , name )
0 commit comments