From 648ff2e5053e6a94442e4ef5954b7a82961684e5 Mon Sep 17 00:00:00 2001 From: Sultan Orazbayev Date: Sat, 28 May 2022 21:51:29 +0600 Subject: [PATCH 1/5] Create show_versions.py --- dask/show_versions.py | 57 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 dask/show_versions.py diff --git a/dask/show_versions.py b/dask/show_versions.py new file mode 100644 index 00000000000..21eaa5f56b4 --- /dev/null +++ b/dask/show_versions.py @@ -0,0 +1,57 @@ +from json import dumps +from platform import uname +from sys import stdout, version_info + +from pandas._typing import JSONSerializable +from pandas.compat._optional import get_version, import_optional_dependency + + +def show_versions(as_json: bool = False) -> None: + """Provide version information for bug reports. + + Parameters + ---------- + as_json : bool, default False + * If False, outputs info in a YAML format to the console (can be copy- + pasted into an environment.yml file for conda). + * If True, outputs info in JSON format to the console. + """ + + def _format_as_conda_environment_yaml(result: dict[str, JSONSerializable]) -> str: + """A small utility to return dependencies in a conda-friendly format.""" + formatted_result = "" + for dep, dep_ver in result.items(): + if dep == "Platform" or dep_ver is None: + continue + formatted_result += f"- {dep}={dep_ver}" + formatted_result += "\n" + + return formatted_result + + deps = [ + "dask", + "distributed", + "numpy", + "pandas", + "cloudpickle", + "fsspec", + "bokeh", + "fastparquet", + "pyarrow", + "zarr", + ] + + result = { + # note: only major, minor, micro are extracted + "Python": ".".join([str(i) for i in version_info[:3]]), + "Platform": uname().system, + } + + for modname in deps: + mod = import_optional_dependency(modname, errors="ignore") + result[modname] = get_version(mod) if mod else None + + if as_json is True: + stdout.writelines(dumps(result, indent=2)) + elif as_json is False: + stdout.writelines(_format_as_conda_environment_yaml(result)) From eb5f4e200c97fe17835a38c6d36256fe427fb646 Mon Sep 17 00:00:00 2001 From: Sultan Orazbayev Date: Wed, 1 Jun 2022 03:49:34 +0000 Subject: [PATCH 2/5] Simplify the function and move it to utils --- dask/show_versions.py | 57 ------------------------------------------- dask/utils.py | 39 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 57 deletions(-) delete mode 100644 dask/show_versions.py diff --git a/dask/show_versions.py b/dask/show_versions.py deleted file mode 100644 index 21eaa5f56b4..00000000000 --- a/dask/show_versions.py +++ /dev/null @@ -1,57 +0,0 @@ -from json import dumps -from platform import uname -from sys import stdout, version_info - -from pandas._typing import JSONSerializable -from pandas.compat._optional import get_version, import_optional_dependency - - -def show_versions(as_json: bool = False) -> None: - """Provide version information for bug reports. - - Parameters - ---------- - as_json : bool, default False - * If False, outputs info in a YAML format to the console (can be copy- - pasted into an environment.yml file for conda). - * If True, outputs info in JSON format to the console. - """ - - def _format_as_conda_environment_yaml(result: dict[str, JSONSerializable]) -> str: - """A small utility to return dependencies in a conda-friendly format.""" - formatted_result = "" - for dep, dep_ver in result.items(): - if dep == "Platform" or dep_ver is None: - continue - formatted_result += f"- {dep}={dep_ver}" - formatted_result += "\n" - - return formatted_result - - deps = [ - "dask", - "distributed", - "numpy", - "pandas", - "cloudpickle", - "fsspec", - "bokeh", - "fastparquet", - "pyarrow", - "zarr", - ] - - result = { - # note: only major, minor, micro are extracted - "Python": ".".join([str(i) for i in version_info[:3]]), - "Platform": uname().system, - } - - for modname in deps: - mod = import_optional_dependency(modname, errors="ignore") - result[modname] = get_version(mod) if mod else None - - if as_json is True: - stdout.writelines(dumps(result, indent=2)) - elif as_json is False: - stdout.writelines(_format_as_conda_environment_yaml(result)) diff --git a/dask/utils.py b/dask/utils.py index 5ee6c0cae6e..691cda7a2cf 100644 --- a/dask/utils.py +++ b/dask/utils.py @@ -1945,3 +1945,42 @@ def cached_cumsum(seq, initial_zero=False): # Construct a temporary tuple, and look up by value. result = _cumsum(tuple(seq), initial_zero) return result + + +def show_versions() -> None: + """Provide version information for bug reports.""" + + from platform import uname + from json import dumps + from sys import stdout, version_info + from importlib.metadata import version + + deps = [ + "dask", + "distributed", + "numpy", + "pandas", + "cloudpickle", + "fsspec", + "bokeh", + "fastparquet", + "pyarrow", + "zarr", + ] + + result = { + # note: only major, minor, micro are extracted + "Python": ".".join([str(i) for i in version_info[:3]]), + "Platform": uname().system, + } + + for modname in deps: + try: + result[modname] = version(modname) + except PackageNotFoundError: + result[modname] = None + + formatted_result = f"Platform: {result.pop('Platform')}" + stdout.writelines(dumps(result, indent=2)) + + return From b3cc4547299496bcc14ef24d840afb81c4ed800e Mon Sep 17 00:00:00 2001 From: Sultan Orazbayev Date: Wed, 1 Jun 2022 03:55:16 +0000 Subject: [PATCH 3/5] fix import order (isort) --- dask/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dask/utils.py b/dask/utils.py index 691cda7a2cf..8cd731e904e 100644 --- a/dask/utils.py +++ b/dask/utils.py @@ -1950,10 +1950,10 @@ def cached_cumsum(seq, initial_zero=False): def show_versions() -> None: """Provide version information for bug reports.""" - from platform import uname + from importlib.metadata import version from json import dumps + from platform import uname from sys import stdout, version_info - from importlib.metadata import version deps = [ "dask", From 0b996315427da59bc74fd8c78ed483d6cb7d63d2 Mon Sep 17 00:00:00 2001 From: Sultan Orazbayev Date: Wed, 1 Jun 2022 04:04:35 +0000 Subject: [PATCH 4/5] fix imports and remove unused var --- dask/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dask/utils.py b/dask/utils.py index 8cd731e904e..30939703469 100644 --- a/dask/utils.py +++ b/dask/utils.py @@ -1950,7 +1950,7 @@ def cached_cumsum(seq, initial_zero=False): def show_versions() -> None: """Provide version information for bug reports.""" - from importlib.metadata import version + from importlib.metadata import PackageNotFoundError, version from json import dumps from platform import uname from sys import stdout, version_info @@ -1968,7 +1968,7 @@ def show_versions() -> None: "zarr", ] - result = { + result: dict[str, str | None] = { # note: only major, minor, micro are extracted "Python": ".".join([str(i) for i in version_info[:3]]), "Platform": uname().system, @@ -1980,7 +1980,6 @@ def show_versions() -> None: except PackageNotFoundError: result[modname] = None - formatted_result = f"Platform: {result.pop('Platform')}" stdout.writelines(dumps(result, indent=2)) return From 4091fba326a7ccb6e109729a290e28dee80b6fe3 Mon Sep 17 00:00:00 2001 From: Sultan Orazbayev Date: Fri, 24 Jun 2022 10:44:14 +0000 Subject: [PATCH 5/5] use __version__ for dask and distributed --- dask/utils.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dask/utils.py b/dask/utils.py index 30939703469..70710607a88 100644 --- a/dask/utils.py +++ b/dask/utils.py @@ -1955,9 +1955,11 @@ def show_versions() -> None: from platform import uname from sys import stdout, version_info + from distributed import __version__ as distributed_version + + from dask import __version__ as dask_version + deps = [ - "dask", - "distributed", "numpy", "pandas", "cloudpickle", @@ -1972,6 +1974,8 @@ def show_versions() -> None: # note: only major, minor, micro are extracted "Python": ".".join([str(i) for i in version_info[:3]]), "Platform": uname().system, + "dask": dask_version, + "distributed": distributed_version, } for modname in deps: