pyg-nightly 2.7.0.dev20250215__py3-none-any.whl → 2.7.0.dev20250216__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyg-nightly
3
- Version: 2.7.0.dev20250215
3
+ Version: 2.7.0.dev20250216
4
4
  Summary: Graph Neural Network Library for PyTorch
5
5
  Keywords: deep-learning,pytorch,geometric-deep-learning,graph-neural-networks,graph-convolutional-networks
6
6
  Author-email: Matthias Fey <matthias@pyg.org>
@@ -22,6 +22,7 @@ Requires-Dist: psutil>=5.8.0
22
22
  Requires-Dist: pyparsing
23
23
  Requires-Dist: requests
24
24
  Requires-Dist: tqdm
25
+ Requires-Dist: xxhash
25
26
  Requires-Dist: matplotlib ; extra == "benchmark"
26
27
  Requires-Dist: networkx ; extra == "benchmark"
27
28
  Requires-Dist: pandas ; extra == "benchmark"
@@ -1,4 +1,4 @@
1
- torch_geometric/__init__.py,sha256=WUHw4l8NRfqG5Jr-cDi2l7tNpLMNU6SgjrnbmA6eFhY,1978
1
+ torch_geometric/__init__.py,sha256=QlYg3d7vRWC0k_OzPCmAanyTUBiTvikPuzM9feT0REk,1978
2
2
  torch_geometric/_compile.py,sha256=f-WQeH4VLi5Hn9lrgztFUCSrN_FImjhQa6BxFzcYC38,1338
3
3
  torch_geometric/_onnx.py,sha256=V9ffrIKSqhDw6xUZ12lkuSfNs48cQp2EeJ6Z19GfnVw,349
4
4
  torch_geometric/backend.py,sha256=lVaf7aLoVaB3M-UcByUJ1G4T4FOK6LXAg0CF4W3E8jo,1575
@@ -9,7 +9,7 @@ torch_geometric/deprecation.py,sha256=dWRymDIUkUVI2MeEmBG5WF4R6jObZeseSBV9G6FNfj
9
9
  torch_geometric/device.py,sha256=tU5-_lBNVbVHl_kUmWPwiG5mQ1pyapwMF4JkmtNN3MM,1224
10
10
  torch_geometric/edge_index.py,sha256=BsLh5tOZRjjSYDkjqOFAdBuvMaDg7EWaaLELYsUL0Z8,70048
11
11
  torch_geometric/experimental.py,sha256=JbtNNEXjFGI8hZ9raM6-qrZURP6Z5nlDK8QicZUIbz0,4756
12
- torch_geometric/hash_tensor.py,sha256=MRmjpF7dnH_IfC3HdT0LnjBa1-Q6zpPehPSCLxy2lLY,3912
12
+ torch_geometric/hash_tensor.py,sha256=VBuz9n16ouSk2u4DifpCIW5MXiuoH5UGO4rPj-Celjw,4418
13
13
  torch_geometric/home.py,sha256=EV54B4Dmiv61GDbkCwtCfWGWJ4eFGwZ8s3KOgGjwYgY,790
14
14
  torch_geometric/index.py,sha256=9ChzWFCwj2slNcVBOgfV-wQn-KscJe_y7502w-Vf76w,24045
15
15
  torch_geometric/inspector.py,sha256=nKi5o4Mn6xsG0Ex1GudTEQt_EqnF9mcMqGtp7Shh9sQ,19336
@@ -19,7 +19,7 @@ torch_geometric/logging.py,sha256=HmHHLiCcM64k-6UYNOSfXPIeSGNAyiGGcn8cD8tlyuQ,85
19
19
  torch_geometric/resolver.py,sha256=fn-_6mCpI2xv7eDZnIFcYrHOn0IrwbkWFLDb9laQrWI,1270
20
20
  torch_geometric/seed.py,sha256=MJLbVwpb9i8mK3oi32sS__Cq-dRq_afTeoOL_HoA9ko,372
21
21
  torch_geometric/template.py,sha256=rqjDWgcSAgTCiV4bkOjWRPaO4PpUdC_RXigzxxBqAu8,1060
22
- torch_geometric/typing.py,sha256=-YM1o6csJsWsHpEzmnjIh82_3yq6m-1nwC2TjUMKRGk,15520
22
+ torch_geometric/typing.py,sha256=mtSM6QhCsrohstnyvqMuxEIajCkhcvkQKOU4uVu-nDs,15596
23
23
  torch_geometric/warnings.py,sha256=t114CbkrmiqkXaavx5g7OO52dLdktf-U__B5QqYIQvI,413
24
24
  torch_geometric/contrib/__init__.py,sha256=0pWkmXfZtbdr-AKwlii5LTFggTEH-MCrSKpZxrtPlVs,352
25
25
  torch_geometric/contrib/datasets/__init__.py,sha256=lrGnWsEiJf5zsBRmshGZZFN_uYR2ezDjbj9n9nCpvtk,23
@@ -633,6 +633,6 @@ torch_geometric/utils/undirected.py,sha256=H_nfpI0_WluOG6VfjPyldvcjL4w5USAKWu2x5
633
633
  torch_geometric/visualization/__init__.py,sha256=PyR_4K5SafsJrBr6qWrkjKr6GBL1b7FtZybyXCDEVwY,154
634
634
  torch_geometric/visualization/graph.py,sha256=ZuLPL92yGRi7lxlqsUPwL_EVVXF7P2kMcveTtW79vpA,4784
635
635
  torch_geometric/visualization/influence.py,sha256=CWMvuNA_Nf1sfbJmQgn58yS4OFpeKXeZPe7kEuvkUBw,477
636
- pyg_nightly-2.7.0.dev20250215.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
637
- pyg_nightly-2.7.0.dev20250215.dist-info/METADATA,sha256=j3pySMauadU_aRqO78jwhWjPQhV5lapZkr3uvX3fffk,62977
638
- pyg_nightly-2.7.0.dev20250215.dist-info/RECORD,,
636
+ pyg_nightly-2.7.0.dev20250216.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
637
+ pyg_nightly-2.7.0.dev20250216.dist-info/METADATA,sha256=nrJ478w_yYVSpIyqlfR5lxdYTu6NOIzCv_atkMY5w5w,62999
638
+ pyg_nightly-2.7.0.dev20250216.dist-info/RECORD,,
@@ -31,7 +31,7 @@ from .lazy_loader import LazyLoader
31
31
  contrib = LazyLoader('contrib', globals(), 'torch_geometric.contrib')
32
32
  graphgym = LazyLoader('graphgym', globals(), 'torch_geometric.graphgym')
33
33
 
34
- __version__ = '2.7.0.dev20250215'
34
+ __version__ = '2.7.0.dev20250216'
35
35
 
36
36
  __all__ = [
37
37
  'Index',
@@ -2,6 +2,7 @@ from typing import Any, Callable, Dict, Iterable, Optional, Tuple, Type, Union
2
2
 
3
3
  import torch
4
4
  import torch.utils._pytree as pytree
5
+ import xxhash
5
6
  from torch import Tensor
6
7
 
7
8
  from torch_geometric.typing import CPUHashMap, CUDAHashMap
@@ -9,6 +10,33 @@ from torch_geometric.typing import CPUHashMap, CUDAHashMap
9
10
  HANDLED_FUNCTIONS: Dict[Callable, Callable] = {}
10
11
 
11
12
 
13
+ def as_key_tensor(
14
+ key: Any,
15
+ *,
16
+ device: Optional[torch.device] = None,
17
+ ) -> Tensor:
18
+ try:
19
+ key = torch.as_tensor(key, device=device)
20
+ except Exception:
21
+ key = torch.tensor([
22
+ xxhash.xxh64(item).intdigest() & 0x7FFFFFFFFFFFFFFF for item in key
23
+ ], dtype=torch.int64, device=device)
24
+
25
+ if key.element_size() == 1:
26
+ key = key.view(torch.uint8)
27
+ elif key.element_size() == 2:
28
+ key = key.view(torch.int16)
29
+ elif key.element_size() == 4:
30
+ key = key.view(torch.int32)
31
+ elif key.element_size() == 8:
32
+ key = key.view(torch.int64)
33
+ else:
34
+ raise ValueError(f"Received invalid dtype '{key.dtype}' with "
35
+ f"{key.element_size()} bytes")
36
+
37
+ return key
38
+
39
+
12
40
  class HashTensor(Tensor):
13
41
  _map: Union[Tensor, CPUHashMap, CUDAHashMap]
14
42
  _value: Optional[Tensor]
@@ -24,18 +52,11 @@ class HashTensor(Tensor):
24
52
  ) -> 'HashTensor':
25
53
 
26
54
  if value is not None:
27
- if not isinstance(value, Tensor):
28
- value = torch.tensor(value, dtype=dtype, device=device)
29
- else:
30
- value = value.to(device, dtype)
31
-
32
- # TODO Add numpy support
33
- if not isinstance(key, Tensor):
34
- device = value.device if value is not None else device
35
- key = torch.tensor(key, device=device)
36
- else:
37
- key = key.to(device)
38
- device = key.device
55
+ value = torch.as_tensor(value, dtype=dtype, device=device)
56
+ device = value.device
57
+
58
+ key = as_key_tensor(key, device=device)
59
+ device = key.device
39
60
 
40
61
  if key.dim() != 1:
41
62
  raise ValueError(f"'key' data in '{cls.__name__}' needs to be "
torch_geometric/typing.py CHANGED
@@ -69,10 +69,16 @@ try:
69
69
  pyg_lib.sampler.neighbor_sample).parameters)
70
70
  WITH_WEIGHTED_NEIGHBOR_SAMPLE = ('edge_weight' in inspect.signature(
71
71
  pyg_lib.sampler.neighbor_sample).parameters)
72
- # WITH_CPU_HASH_MAP = hasattr(torch.classes.pyg, 'CPUHashMap')
73
- # WITH_CUDA_HASH_MAP = hasattr(torch.classes.pyg, 'CUDAHashMap')
74
- WITH_CPU_HASH_MAP = False
75
- WITH_CUDA_HASH_MAP = False
72
+ try:
73
+ torch.classes.pyg.CPUHashMap
74
+ WITH_CPU_HASH_MAP = True
75
+ except Exception:
76
+ WITH_CPU_HASH_MAP = False
77
+ try:
78
+ torch.classes.pyg.CUDAHashMap
79
+ WITH_CUDA_HASH_MAP = True
80
+ except Exception:
81
+ WITH_CUDA_HASH_MAP = False
76
82
  except Exception as e:
77
83
  if not isinstance(e, ImportError): # pragma: no cover
78
84
  warnings.warn(f"An issue occurred while importing 'pyg-lib'. "