dkg 8.0.0a3__py3-none-any.whl → 8.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. dkg/__init__.py +1 -1
  2. dkg/assertion.py +2 -2
  3. dkg/clients/__init__.py +4 -0
  4. dkg/clients/async_dkg.py +109 -0
  5. dkg/{main.py → clients/dkg.py} +42 -21
  6. dkg/constants.py +117 -6
  7. dkg/data/interfaces/AskStorage.json +366 -0
  8. dkg/data/interfaces/Chronos.json +202 -0
  9. dkg/data/interfaces/Hub.json +294 -2
  10. dkg/data/interfaces/IdentityStorage.json +58 -0
  11. dkg/data/interfaces/{ContentAsset.json → KnowledgeCollection.json} +256 -343
  12. dkg/data/interfaces/KnowledgeCollectionStorage.json +2312 -0
  13. dkg/data/interfaces/Paranet.json +30 -214
  14. dkg/data/interfaces/ParanetIncentivesPoolFactory.json +18 -2
  15. dkg/data/interfaces/ParanetKnowledgeMinersRegistry.json +20 -4
  16. dkg/data/interfaces/{ParanetNeurowebIncentivesPool.json → ParanetNeuroIncentivesPool.json} +7 -7
  17. dkg/data/interfaces/ParanetsRegistry.json +102 -32
  18. dkg/data/interfaces/Token.json +146 -17
  19. dkg/managers/__init__.py +0 -0
  20. dkg/managers/async_manager.py +69 -0
  21. dkg/{manager.py → managers/manager.py} +5 -3
  22. dkg/method.py +5 -2
  23. dkg/modules/__init__.py +0 -0
  24. dkg/modules/asset/__init__.py +0 -0
  25. dkg/modules/asset/asset.py +739 -0
  26. dkg/modules/asset/async_asset.py +753 -0
  27. dkg/modules/async_module.py +66 -0
  28. dkg/modules/graph/__init__.py +0 -0
  29. dkg/modules/graph/async_graph.py +112 -0
  30. dkg/modules/graph/graph.py +87 -0
  31. dkg/{module.py → modules/module.py} +1 -1
  32. dkg/modules/network/__init__.py +0 -0
  33. dkg/{network.py → modules/network/network.py} +4 -4
  34. dkg/modules/node/__init__.py +0 -0
  35. dkg/modules/node/async_node.py +39 -0
  36. dkg/{node.py → modules/node/node.py} +2 -2
  37. dkg/modules/paranet/__init__.py +0 -0
  38. dkg/{paranet.py → modules/paranet/paranet.py} +2 -6
  39. dkg/providers/__init__.py +9 -2
  40. dkg/providers/blockchain/__init__.py +4 -0
  41. dkg/providers/blockchain/async_blockchain.py +245 -0
  42. dkg/providers/blockchain/base_blockchain.py +102 -0
  43. dkg/providers/{blockchain.py → blockchain/blockchain.py} +15 -96
  44. dkg/providers/node/__init__.py +4 -0
  45. dkg/providers/node/async_node_http.py +72 -0
  46. dkg/providers/node/base_node_http.py +25 -0
  47. dkg/providers/{node_http.py → node/node_http.py} +12 -10
  48. dkg/services/__init__.py +0 -0
  49. dkg/services/blockchain_services/__init__.py +0 -0
  50. dkg/services/blockchain_services/async_blockchain_service.py +180 -0
  51. dkg/services/blockchain_services/blockchain_service.py +174 -0
  52. dkg/services/input_service.py +181 -0
  53. dkg/services/node_services/__init__.py +0 -0
  54. dkg/services/node_services/async_node_service.py +184 -0
  55. dkg/services/node_services/node_service.py +167 -0
  56. dkg/types/__init__.py +11 -11
  57. dkg/utils/blockchain_request.py +76 -50
  58. dkg/utils/knowledge_asset_tools.py +5 -0
  59. dkg/utils/knowledge_collection_tools.py +248 -0
  60. dkg/utils/node_request.py +60 -14
  61. dkg/utils/rdf.py +9 -3
  62. {dkg-8.0.0a3.dist-info → dkg-8.0.2.dist-info}/METADATA +28 -19
  63. dkg-8.0.2.dist-info/RECORD +82 -0
  64. {dkg-8.0.0a3.dist-info → dkg-8.0.2.dist-info}/WHEEL +1 -1
  65. dkg/asset.py +0 -912
  66. dkg/data/interfaces/AssertionStorage.json +0 -229
  67. dkg/data/interfaces/ContentAssetStorage.json +0 -706
  68. dkg/data/interfaces/ServiceAgreementStorageProxy.json +0 -1314
  69. dkg/graph.py +0 -63
  70. dkg-8.0.0a3.dist-info/RECORD +0 -52
  71. {dkg-8.0.0a3.dist-info → dkg-8.0.2.dist-info}/LICENSE +0 -0
  72. {dkg-8.0.0a3.dist-info → dkg-8.0.2.dist-info}/NOTICE +0 -0
dkg/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from . import providers # NOQA: F401
2
2
  from . import utils # NOQA: F401
3
- from .main import DKG # NOQA: F401
3
+ from .clients import DKG, AsyncDKG # NOQA: F401
dkg/assertion.py CHANGED
@@ -17,8 +17,8 @@
17
17
 
18
18
  from typing import Literal
19
19
 
20
- from dkg.manager import DefaultRequestManager
21
- from dkg.module import Module
20
+ from dkg.managers.manager import DefaultRequestManager
21
+ from dkg.modules.module import Module
22
22
  from dkg.types import JSONLD, HexStr
23
23
  from dkg.utils.merkle import MerkleTree, hash_assertion_with_indexes
24
24
  from dkg.utils.metadata import generate_assertion_metadata
@@ -0,0 +1,4 @@
1
+ from .dkg import DKG
2
+ from .async_dkg import AsyncDKG
3
+
4
+ __all__ = ["DKG", "AsyncDKG"]
@@ -0,0 +1,109 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ from functools import wraps
19
+
20
+
21
+ from dkg.modules.asset.async_asset import AsyncKnowledgeAsset
22
+ from dkg.modules.graph.async_graph import AsyncGraph
23
+ from dkg.managers.async_manager import AsyncRequestManager
24
+ from dkg.modules.async_module import AsyncModule
25
+ from dkg.modules.node.async_node import AsyncNode
26
+ from dkg.types import UAL, Address, ChecksumAddress
27
+ from dkg.utils.ual import format_ual, parse_ual
28
+ from dkg.services.input_service import InputService
29
+ from dkg.providers.blockchain.async_blockchain import AsyncBlockchainProvider
30
+ from dkg.providers.node.async_node_http import AsyncNodeHTTPProvider
31
+ from dkg.services.node_services.async_node_service import AsyncNodeService
32
+ from dkg.services.blockchain_services.async_blockchain_service import (
33
+ AsyncBlockchainService,
34
+ )
35
+
36
+
37
+ class AsyncDKG(AsyncModule):
38
+ asset: AsyncKnowledgeAsset
39
+ node: AsyncNode
40
+ graph: AsyncGraph
41
+
42
+ def __init__(
43
+ self,
44
+ node_provider: AsyncNodeHTTPProvider,
45
+ blockchain_provider: AsyncBlockchainProvider,
46
+ config: dict = {},
47
+ ):
48
+ self.manager = AsyncRequestManager(node_provider, blockchain_provider)
49
+
50
+ self.initialize_services(config)
51
+
52
+ modules = {
53
+ "asset": AsyncKnowledgeAsset(
54
+ self.manager,
55
+ self.input_service,
56
+ self.node_service,
57
+ self.blockchain_service,
58
+ ),
59
+ "node": AsyncNode(self.manager, self.node_service),
60
+ "graph": AsyncGraph(self.manager, self.input_service, self.node_service),
61
+ }
62
+ self._attach_modules(modules)
63
+
64
+ self._setup_backwards_compatibility()
65
+
66
+ def _setup_backwards_compatibility(self):
67
+ # Create async wrapper methods
68
+ async def graph_get(*args, **kwargs):
69
+ return await self.asset.get(*args, **kwargs)
70
+
71
+ async def graph_create(*args, **kwargs):
72
+ return await self.asset.create(*args, **kwargs)
73
+
74
+ # Attach methods to graph
75
+ self.graph.get = graph_get
76
+ self.graph.create = graph_create
77
+
78
+ def initialize_services(self, config: dict = {}):
79
+ self.input_service = InputService(self.manager, config)
80
+ self.node_service = AsyncNodeService(self.manager)
81
+ self.blockchain_service = AsyncBlockchainService(self.manager)
82
+
83
+ @staticmethod
84
+ @wraps(format_ual)
85
+ def format_ual(
86
+ blockchain: str, contract_address: Address | ChecksumAddress, token_id: int
87
+ ) -> UAL:
88
+ return format_ual(blockchain, contract_address, token_id)
89
+
90
+ @staticmethod
91
+ @wraps(parse_ual)
92
+ def parse_ual(ual: UAL) -> dict[str, str | Address | int]:
93
+ return parse_ual(ual)
94
+
95
+ @property
96
+ def node_provider(self) -> AsyncNodeHTTPProvider:
97
+ return self.manager.node_provider
98
+
99
+ @node_provider.setter
100
+ def node_provider(self, node_provider: AsyncNodeHTTPProvider) -> None:
101
+ self.manager.node_provider = node_provider
102
+
103
+ @property
104
+ def blockchain_provider(self) -> AsyncBlockchainProvider:
105
+ return self.manager.blockchain_provider
106
+
107
+ @blockchain_provider.setter
108
+ def blockchain_provider(self, blockchain_provider: AsyncBlockchainProvider) -> None:
109
+ self.manager.blockchain_provider = blockchain_provider
@@ -18,16 +18,19 @@
18
18
  from functools import wraps
19
19
 
20
20
  from dkg.assertion import Assertion
21
- from dkg.asset import KnowledgeAsset
22
- from dkg.graph import Graph
23
- from dkg.manager import DefaultRequestManager
24
- from dkg.module import Module
25
- from dkg.network import Network
26
- from dkg.node import Node
27
- from dkg.paranet import Paranet
21
+ from dkg.modules.asset.asset import KnowledgeAsset
22
+ from dkg.modules.graph.graph import Graph
23
+ from dkg.managers.manager import DefaultRequestManager
24
+ from dkg.modules.module import Module
25
+ from dkg.modules.network.network import Network
26
+ from dkg.modules.node.node import Node
27
+ from dkg.modules.paranet.paranet import Paranet
28
28
  from dkg.providers import BlockchainProvider, NodeHTTPProvider
29
29
  from dkg.types import UAL, Address, ChecksumAddress
30
30
  from dkg.utils.ual import format_ual, parse_ual
31
+ from dkg.services.input_service import InputService
32
+ from dkg.services.node_services.node_service import NodeService
33
+ from dkg.services.blockchain_services.blockchain_service import BlockchainService
31
34
 
32
35
 
33
36
  class DKG(Module):
@@ -38,34 +41,52 @@ class DKG(Module):
38
41
  node: Node
39
42
  graph: Graph
40
43
 
41
- @staticmethod
42
- @wraps(format_ual)
43
- def format_ual(
44
- blockchain: str, contract_address: Address | ChecksumAddress, token_id: int
45
- ) -> UAL:
46
- return format_ual(blockchain, contract_address, token_id)
47
-
48
- @staticmethod
49
- @wraps(parse_ual)
50
- def parse_ual(ual: UAL) -> dict[str, str | Address | int]:
51
- return parse_ual(ual)
52
-
53
44
  def __init__(
54
45
  self,
55
46
  node_provider: NodeHTTPProvider,
56
47
  blockchain_provider: BlockchainProvider,
48
+ config: dict = {},
57
49
  ):
58
50
  self.manager = DefaultRequestManager(node_provider, blockchain_provider)
51
+
52
+ self.initialize_services(config)
53
+
59
54
  modules = {
60
55
  "assertion": Assertion(self.manager),
61
- "asset": KnowledgeAsset(self.manager),
56
+ "asset": KnowledgeAsset(
57
+ self.manager,
58
+ self.input_service,
59
+ self.node_service,
60
+ self.blockchain_service,
61
+ ),
62
62
  "paranet": Paranet(self.manager),
63
63
  "network": Network(self.manager),
64
64
  "node": Node(self.manager),
65
- "graph": Graph(self.manager),
65
+ "graph": Graph(self.manager, self.input_service, self.node_service),
66
66
  }
67
67
  self._attach_modules(modules)
68
68
 
69
+ # Backwards compatibility
70
+ self.graph.get = self.asset.get.__get__(self.asset)
71
+ self.graph.create = self.asset.create.__get__(self.asset)
72
+
73
+ def initialize_services(self, config):
74
+ self.input_service = InputService(self.manager, config)
75
+ self.node_service = NodeService(self.manager)
76
+ self.blockchain_service = BlockchainService(self.manager)
77
+
78
+ @staticmethod
79
+ @wraps(format_ual)
80
+ def format_ual(
81
+ blockchain: str, contract_address: Address | ChecksumAddress, token_id: int
82
+ ) -> UAL:
83
+ return format_ual(blockchain, contract_address, token_id)
84
+
85
+ @staticmethod
86
+ @wraps(parse_ual)
87
+ def parse_ual(ual: UAL) -> dict[str, str | Address | int]:
88
+ return parse_ual(ual)
89
+
69
90
  @property
70
91
  def node_provider(self) -> NodeHTTPProvider:
71
92
  return self.manager.node_provider
dkg/constants.py CHANGED
@@ -1,3 +1,6 @@
1
+ from enum import Enum, auto
2
+ from dkg.types import AutoStrEnumUpperCase
3
+
1
4
  # Licensed to the Apache Software Foundation (ASF) under one
2
5
  # or more contributor license agreements. See the NOTICE file
3
6
  # distributed with this work for additional information
@@ -15,10 +18,79 @@
15
18
  # specific language governing permissions and limitations
16
19
  # under the License.
17
20
 
21
+ DEFAULT_CANON_ALGORITHM = "URDNA2015"
22
+ DEFAULT_RDF_FORMAT = "application/n-quads"
23
+
18
24
  PRIVATE_ASSERTION_PREDICATE = (
19
- "https://ontology.origintrail.io/dkg/1.0#privateAssertionID"
25
+ "https://ontology.origintrail.io/dkg/1.0#privateMerkleRoot"
26
+ )
27
+
28
+ PRIVATE_HASH_SUBJECT_PREFIX = "https://ontology.origintrail.io/dkg/1.0#metadata-hash:"
29
+
30
+ PRIVATE_RESOURCE_PREDICATE = (
31
+ "https://ontology.origintrail.io/dkg/1.0#representsPrivateResource"
20
32
  )
21
33
 
34
+ CHUNK_BYTE_SIZE = 32
35
+
36
+ MAX_FILE_SIZE = 10000000
37
+
38
+
39
+ class DefaultParameters(Enum):
40
+ ENVIRONMENT: str = "mainnet"
41
+ PORT: int = 8900
42
+ FREQUENCY: int = 5
43
+ MAX_NUMBER_OF_RETRIES: int = 5
44
+ HASH_FUNCTION_ID: int = 1
45
+ MIN_NUMBER_OF_FINALIZATION_CONFIRMATION: int = 3
46
+ IMMUTABLE: bool = False
47
+ VALIDATE: bool = True
48
+ OUTPUT_FORMAT: str = "JSON-LD"
49
+ STATE: None = None
50
+ INCLUDE_METADATA: bool = False
51
+ CONTENT_TYPE: str = "all"
52
+ HANDLE_NOT_MINED_ERROR: bool = False
53
+ SIMULATE_TXS: bool = False
54
+ FORCE_REPLACE_TXS: bool = False
55
+ GAS_LIMIT_MULTIPLIER: int = 1
56
+ PARANET_UAL: None = None
57
+ GET_SUBJECT_UAL: bool = False
58
+ REPOSITORY: str = "dkg"
59
+
60
+
61
+ class OutputTypes(Enum):
62
+ NQUADS: str = "N-QUADS"
63
+ JSONLD: str = "JSON-LD"
64
+
65
+
66
+ class Environments(Enum):
67
+ DEVELOPMENT: str = "development"
68
+ DEVNET: str = "devnet"
69
+ TESTNET: str = "testnet"
70
+ MAINNET: str = "mainnet"
71
+
72
+
73
+ class BlockchainIds(Enum):
74
+ HARDHAT_1: str = "hardhat1:31337"
75
+ HARDHAT_2: str = "hardhat2:31337"
76
+ BASE_DEVNET: str = "base:84532"
77
+ GNOSIS_DEVNET: str = "gnosis:10200"
78
+ NEUROWEB_DEVNET: str = "otp:2160"
79
+ BASE_TESTNET: str = "base:84532"
80
+ GNOSIS_TESTNET: str = "gnosis:10200"
81
+ NEUROWEB_TESTNET: str = "otp:20430"
82
+ BASE_MAINNET: str = "base:8453"
83
+ GNOSIS_MAINNET: str = "gnosis:100"
84
+ NEUROWEB_MAINNET: str = "otp:2043"
85
+
86
+
87
+ class OperationStatuses(str, Enum):
88
+ PENDING = "PENDING"
89
+ COMPLETED = "COMPLETED"
90
+ FAILED = "FAILED"
91
+
92
+
93
+ ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"
22
94
  BLOCKCHAINS = {
23
95
  "development": {
24
96
  "hardhat1:31337": {
@@ -32,20 +104,40 @@ BLOCKCHAINS = {
32
104
  },
33
105
  "devnet": {
34
106
  "base:84532": {
35
- "hub": "0xaA849CAC4FA86f6b7484503f3c7a314772AED6d4",
107
+ "hub": "0xE043daF4cC8ae2c720ef95fc82574a37a429c40A",
36
108
  "rpc": "https://sepolia.base.org",
37
109
  }
38
110
  },
39
111
  "testnet": {
40
112
  "base:84532": {
41
- "hub": "0xCca0eA14540588A09c85cD6A6Fc53eA3A7010692",
113
+ "hub": "0xf21CE8f8b01548D97DCFb36869f1ccB0814a4e05",
42
114
  "rpc": "https://sepolia.base.org",
43
- }
115
+ },
116
+ "gnosis:10200": {
117
+ "hub": "0x2c08AC4B630c009F709521e56Ac385A6af70650f",
118
+ "rpc": "https://rpc.chiadochain.net",
119
+ },
120
+ "otp:20430": {
121
+ "hub": "0xd7d073b560412c6A7F33dD670d323D01061E5DEb",
122
+ "rpc": "https://lofar-testnet.origin-trail.network",
123
+ },
124
+ },
125
+ "mainnet": {
126
+ "base:8453": {
127
+ "hub": "0x99Aa571fD5e681c2D27ee08A7b7989DB02541d13",
128
+ "rpc": "https://mainnet.base.org",
129
+ },
130
+ "gnosis:100": {
131
+ "hub": "0x882D0BF07F956b1b94BBfe9E77F47c6fc7D4EC8f",
132
+ "rpc": "https://rpc.gnosischain.com/",
133
+ },
134
+ "otp:2043": {
135
+ "hub": "0x0957e25BD33034948abc28204ddA54b6E1142D6F",
136
+ "rpc": "https://astrosat-parachain-rpc.origin-trail.network",
137
+ },
44
138
  },
45
- "mainnet": {},
46
139
  }
47
140
 
48
- DEFAULT_HASH_FUNCTION_ID = 1
49
141
  DEFAULT_PROXIMITY_SCORE_FUNCTIONS_PAIR_IDS = {
50
142
  "development": {"hardhat1:31337": 2, "hardhat2:31337": 2, "otp:2043": 2},
51
143
  "devnet": {
@@ -67,3 +159,22 @@ DEFAULT_PROXIMITY_SCORE_FUNCTIONS_PAIR_IDS = {
67
159
 
68
160
  PRIVATE_HISTORICAL_REPOSITORY = "privateHistory"
69
161
  PRIVATE_CURRENT_REPOSITORY = "privateCurrent"
162
+
163
+
164
+ class Operations(Enum):
165
+ PUBLISH = "publish"
166
+ GET = "get"
167
+ QUERY = "query"
168
+ PUBLISH_PARANET = "publishParanet"
169
+ FINALITY = "finality"
170
+
171
+
172
+ class Status(AutoStrEnumUpperCase):
173
+ ERROR = auto()
174
+ NOT_FINALIZED = auto()
175
+ FINALIZED = auto()
176
+ NETWORK_ERROR = auto()
177
+
178
+
179
+ class ErrorType(AutoStrEnumUpperCase):
180
+ DKG_CLIENT_ERROR = auto()