-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Open
Labels
Description
Dash runtime requirements inlcude some packages that are not needed at runtime.
Is your feature request related to a problem? Please describe.
Working in an enterprise setting there are strict requirements ragarding deploying secure software. Reducing the attack surface by installing only essential packages is key. As of now, dash requires some packages to be installed in the runtime environment which are not needed to run the app at all or not in particular / newer python versions.
Describe the solution you'd like
- Leverage PEP-518 which allows to remove
setuptools
as a runtime dependency and add it as a build time dependency. importlib_metadata
is sparsely used. Depending on the python version and features needed for this package, it is not required at all and can be replaced withimportlib.metdata
which is inlcuded in the python stanrdard lib (at least for >3.8). Require it only for older python versions. You can handle if the version from the standard-lib or the installed packages should be used by checking the python version when the packages are imported. Add e.g.importlib-metadata ; python_version < 3.9
to the respective requirements file.
import sys
if sys.version_info >= (3, 8):
from importlib.metadata import ...
else:
from importlib_metadata import ...
- I am pretty sure that the
typing_extensions
package is not needed for newer python versions (>=3.10). If you do not leverage runtime type checking you can make it optional. For newer python versions the types can be imported from thetyping
package. Additionally, you can leverage thetyping.TYPE_CHECKING
constant. Again, require it only for older python versions and check the python version before importing the package.
Describe alternatives you've considered
No