Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Typing] Ensure packaging tensor.pyi into wheel #64575

Merged
merged 24 commits into from
Jun 4, 2024
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
29e27dd
[Update] CMakeLists.txt for pack tensor.pyi
megemini May 24, 2024
53ac455
[Update] CMakeLists.txt
megemini May 24, 2024
4d2ab65
[Change] CMakeLists.txt depends
megemini May 24, 2024
18ca0ca
[Change] add CMakeLists.txt target
megemini May 24, 2024
a2bbbdd
[Update] CMakeLists.txt target dep
megemini May 24, 2024
badc1f9
[Update] CMakeLists.txt target dep
megemini May 24, 2024
9b7eb0b
[Change] framework.py paddle_version to paddle.version
megemini May 24, 2024
e26ff49
[Change] quantized_linear.py from paddle import version
megemini May 24, 2024
2293d02
[Change] check is_paddle_installed
megemini May 24, 2024
ebcc87b
[Change] CMakeLists deps
megemini May 25, 2024
84fd3cd
[Change] CMakeLists deps on infer
megemini May 25, 2024
4424f19
[Change] CMakeLists gen after wheel
megemini May 25, 2024
877d97e
[debug] core import
megemini May 25, 2024
1b79366
[debug] copy libs
megemini May 25, 2024
80afecc
[Change] add dll dirs in win
megemini May 25, 2024
921cb7b
[Update] gen_tensor_stub format
megemini May 27, 2024
53670fc
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into…
megemini May 27, 2024
abc48ff
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into…
megemini May 28, 2024
328a10b
[Change] gen tensor stub from setup
megemini May 28, 2024
dafb932
[Update] del comments
megemini May 28, 2024
4fbd7ea
[Update] setup.py.in add function check_build_dependency
megemini May 28, 2024
93f7350
[Update] gen_tensor_stub.py
megemini May 28, 2024
3580be7
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into…
megemini Jun 2, 2024
d77e427
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into…
megemini Jun 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 27 additions & 12 deletions python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -160,24 +160,39 @@ else()
add_custom_command(
OUTPUT ${PADDLE_PYTHON_BUILD_DIR}/.timestamp_wheel
COMMAND env ${py_env} ${PYTHON_EXECUTABLE} setup.py bdist_wheel
COMMENT "Packing whl packages------>>>")
COMMENT "Packing whl packages------>>>"
DEPENDS ${PADDLE_PYTHON_BUILD_DIR}/.timestamp)
endif()
endif()

add_custom_target(paddle_python ALL
DEPENDS ${PADDLE_PYTHON_BUILD_DIR}/.timestamp)

# -------------- Generate tensor.pyi stub file --------------
add_custom_target(
paddle_stub ALL
# generate tensor.pyi for type hints
COMMAND
${CMAKE_COMMAND} -E env PYTHONPATH=${PADDLE_BINARY_DIR}/python
${PYTHON_EXECUTABLE} ${PADDLE_SOURCE_DIR}/tools/gen_tensor_stub.py
--input-file ${PADDLE_SOURCE_DIR}/python/paddle/tensor/tensor.prototype.pyi
--output-file ${PADDLE_BINARY_DIR}/python/paddle/tensor/tensor.pyi
--source-dir ${PADDLE_SOURCE_DIR} --binary-dir ${PADDLE_BINARY_DIR}
# copy tensor.pyi to source dir
COMMAND
${CMAKE_COMMAND} -E copy
${PADDLE_BINARY_DIR}/python/paddle/tensor/tensor.pyi
${PADDLE_SOURCE_DIR}/python/paddle/tensor/tensor.pyi
COMMENT "Generate tensor.pyi------>>>"
DEPENDS ${PADDLE_PYTHON_BUILD_DIR}/.timestamp)

add_dependencies(paddle_stub paddle_python copy_libpaddle)
# -------------- End Generate tensor.pyi stub file --------------

if(BUILD_WHL_PACKAGE AND NOT WITH_SETUP_INSTALL)
add_custom_target(
paddle_copy ALL
# generate tensor.pyi for type hints
COMMAND
${CMAKE_COMMAND} -E env PYTHONPATH=${PADDLE_BINARY_DIR}/python
${PYTHON_EXECUTABLE} ${PADDLE_SOURCE_DIR}/tools/gen_tensor_stub.py
--input-file
${PADDLE_SOURCE_DIR}/python/paddle/tensor/tensor.prototype.pyi
--output-file ${PADDLE_BINARY_DIR}/python/paddle/tensor/tensor.pyi
DEPENDS ${PADDLE_PYTHON_BUILD_DIR}/.timestamp_wheel)
add_dependencies(paddle_copy paddle_python)
add_custom_target(paddle_copy ALL
DEPENDS ${PADDLE_PYTHON_BUILD_DIR}/.timestamp_wheel)
add_dependencies(paddle_copy paddle_python paddle_stub)
endif()

set(PADDLE_PYTHON_PACKAGE_DIR ${CMAKE_CURRENT_BINARY_DIR}/dist/)
Expand Down
6 changes: 5 additions & 1 deletion python/paddle/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,16 @@

import typing

is_paddle_installed = False
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里从其他开发者角度来看会有点奇怪,为什么没有安装却可以调用呢?这里是否可以赋予更细致的语义?比如这里应该是信息已生成,是否可以用 __is_metainfo_generated?加 __ 以免误 import,毕竟这是 __init__

try:
from paddle.cuda_env import * # noqa: F403
from paddle.version import ( # noqa: F401
commit as __git_commit__,
full_version as __version__,
)

is_paddle_installed = True

except ImportError:
import sys

Expand Down Expand Up @@ -577,7 +581,7 @@
if os.path.exists(cuh_file):
os.environ.setdefault('runtime_include_dir', runtime_include_dir)

if is_compiled_with_cuda():
if is_paddle_installed and is_compiled_with_cuda():
import os
import platform

Expand Down
10 changes: 10 additions & 0 deletions python/paddle/base/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@
# Use add_dll_directory to specify dll resolution path
os.add_dll_directory(third_lib_path)

# todo: debug
import glob

sys.stderr.write('^' * 20)
sys.stderr.write(str(glob.glob(third_lib_path + os.sep + '*')))
sys.stderr.write('=' * 20)
sys.stderr.write(os.environ['path'])
sys.stderr.write('=' * 20)
sys.stderr.write(str(glob.glob(current_path + os.sep + '*')))

except ImportError as e:
if os.name == 'nt':
executable_path = os.path.abspath(os.path.dirname(sys.executable))
Expand Down
17 changes: 8 additions & 9 deletions python/paddle/base/framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
import numpy as np

import paddle
import paddle.version as paddle_version

from .. import pir
from . import core, unique_name
Expand Down Expand Up @@ -573,10 +572,10 @@ def require_version(min_version, max_version=None):
)

version_installed = [
paddle_version.major,
paddle_version.minor,
paddle_version.patch,
paddle_version.rc,
paddle.version.major,
paddle.version.minor,
paddle.version.patch,
paddle.version.rc,
]
zero_version = ["0", "0", "0", "0"]

Expand All @@ -591,13 +590,13 @@ def version_cmp(ver_a, ver_b):
if version_cmp(version_installed, zero_version) == 0:
if max_version is not None:
warnings.warn(
f"PaddlePaddle version in [{min_version}, {max_version}] required, but {paddle_version.full_version} installed. "
f"PaddlePaddle version in [{min_version}, {max_version}] required, but {paddle.version.full_version} installed. "
"Maybe you are using a develop version, "
"please make sure the version is good with your code."
)
else:
warnings.warn(
f"PaddlePaddle version {min_version} or higher is required, but {paddle_version.full_version} installed, "
f"PaddlePaddle version {min_version} or higher is required, but {paddle.version.full_version} installed, "
"Maybe you are using a develop version, "
"please make sure the version is good with your code."
)
Expand All @@ -619,12 +618,12 @@ def version_cmp(ver_a, ver_b):
or version_cmp(version_installed, min_version_to_check) < 0
):
raise Exception(
f"VersionError: PaddlePaddle version in [{min_version}, {max_version}] required, but {paddle_version.full_version} installed."
f"VersionError: PaddlePaddle version in [{min_version}, {max_version}] required, but {paddle.version.full_version} installed."
)
else:
if version_cmp(version_installed, min_version_to_check) < 0:
raise Exception(
f"VersionError: PaddlePaddle version {min_version} or higher is required, but {paddle_version.full_version} installed, "
f"VersionError: PaddlePaddle version {min_version} or higher is required, but {paddle.version.full_version} installed, "
f"please upgrade your PaddlePaddle to {min_version} or other higher version."
)

Expand Down
13 changes: 12 additions & 1 deletion python/paddle/nn/quant/quantized_linear.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,18 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from paddle import _C_ops, version
from paddle import _C_ops

try:
from paddle import version
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里同样,删掉 version import,改成 paddle.version 就好了

except ImportError:
import sys

sys.stderr.write(
'''Warning with import paddle: you should not
import paddle from the source directory; please install paddlepaddle*.whl firstly.'''
)

from paddle.base.data_feeder import check_dtype
from paddle.base.framework import convert_np_dtype_to_dtype_
from paddle.device.cuda import get_device_capability
Expand Down
4 changes: 2 additions & 2 deletions python/paddle/tensor/tensor.prototype.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.

# The `Tensor` template for `tools/gen_tensor_stub.py` generates the stub file `tensor.pyi`.
# Add docstring, attributes, methods and alias with type annotaions for `Tensor`
# The `Tensor` template `tensor.prototype.pyi` for `tools/gen_tensor_stub.py` to generate the stub file `tensor.pyi`.
# Add docstring, attributes, methods and alias with type annotaions for `Tensor` in `tensor.prototype.pyi`
# if not conveniently coding in original place (like c++ source file).

from typing import Any, overload
Expand Down
Loading