summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Eendebak <pieter.eendebak@gmail.com>2022-07-29 19:31:27 +0200
committerPieter Eendebak <pieter.eendebak@gmail.com>2022-07-29 19:31:27 +0200
commit27ad8ad5f9b6499fb80eb8fc96c376bf64794906 (patch)
tree2c76fecd01fcf3913876b1e5504c0df7e9a5303b
parent918065167a3860c97d52d6292f206101d660be6f (diff)
downloadnumpy-27ad8ad5f9b6499fb80eb8fc96c376bf64794906.tar.gz
PERF: Improve import time of numpy
* Refactor add_newdoc_for_scalar_type * Eliminate call to platform.system()
-rw-r--r--numpy/core/_add_newdocs_scalars.py35
1 files changed, 26 insertions, 9 deletions
diff --git a/numpy/core/_add_newdocs_scalars.py b/numpy/core/_add_newdocs_scalars.py
index 94859a9d5..d5b31ee2a 100644
--- a/numpy/core/_add_newdocs_scalars.py
+++ b/numpy/core/_add_newdocs_scalars.py
@@ -3,10 +3,11 @@ This file is separate from ``_add_newdocs.py`` so that it can be mocked out by
our sphinx ``conf.py`` during doc builds, where we want to avoid showing
platform-dependent information.
"""
+import sys
+import os
from numpy.core import dtype
from numpy.core import numerictypes as _numerictypes
from numpy.core.function_base import add_newdoc
-import platform
##############################################################################
#
@@ -49,7 +50,18 @@ possible_aliases = numeric_type_aliases([
('complex256', 'Complex number type composed of 2 128-bit extended-precision floating-point numbers'),
])
+possible_aliases_dict = {p[0]: p for idx,p in enumerate(possible_aliases)}
+def _get_platform_and_machine():
+ try:
+ system, _, _, _, machine = os.uname()
+ except AttributeError:
+ system = sys.platform
+ if system=='win32':
+ machine = os.environ.get('PROCESSOR_ARCHITEW6432', '') or os.environ.get('PROCESSOR_ARCHITECTURE', '')
+ return system, machine
+
+_doc_alias_platform_string = ":Alias on this platform ({} {}):".format(*_get_platform_and_machine())
def add_newdoc_for_scalar_type(obj, fixed_aliases, doc):
@@ -57,17 +69,22 @@ def add_newdoc_for_scalar_type(obj, fixed_aliases, doc):
o = getattr(_numerictypes, obj)
character_code = dtype(o).char
- canonical_name_doc = "" if obj == o.__name__ else ":Canonical name: `numpy.{}`\n ".format(obj)
- alias_doc = ''.join(":Alias: `numpy.{}`\n ".format(alias) for alias in fixed_aliases)
- alias_doc += ''.join(":Alias on this platform ({} {}): `numpy.{}`: {}.\n ".format(platform.system(), platform.machine(), alias, doc)
- for (alias_type, alias, doc) in possible_aliases if alias_type is o)
- docstring = """
- {doc}
+ canonical_name_doc = "" if obj == o.__name__ else f":Canonical name: `numpy.{obj}`\n "
+ if fixed_aliases:
+ alias_doc = ''.join(f":Alias: `numpy.{alias}`\n " for alias in fixed_aliases)
+ else:
+ alias_doc = ''
+ p = possible_aliases_dict.get(o, None)
+ if p is not None:
+ alias_type, alias, doc= p
+ alias_doc += f"{_doc_alias_platform_string} `numpy.{alias}`: {doc}.\n "
+
+ docstring = f"""
+ {doc.strip()}
:Character code: ``'{character_code}'``
{canonical_name_doc}{alias_doc}
- """.format(doc=doc.strip(), character_code=character_code,
- canonical_name_doc=canonical_name_doc, alias_doc=alias_doc)
+ """
add_newdoc('numpy.core.numerictypes', obj, docstring)