damlforge 0.0.13__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 (219) hide show
  1. damlforge-0.0.13.data/data/damlforge_git_commithash.txt +1 -0
  2. damlforge-0.0.13.dist-info/METADATA +336 -0
  3. damlforge-0.0.13.dist-info/RECORD +219 -0
  4. damlforge-0.0.13.dist-info/WHEEL +5 -0
  5. damlforge-0.0.13.dist-info/entry_points.txt +2 -0
  6. damlforge-0.0.13.dist-info/licenses/LICENSE +201 -0
  7. damlforge-0.0.13.dist-info/top_level.txt +1 -0
  8. forge/__init__.py +39 -0
  9. forge/__main__.py +21 -0
  10. forge/ast/README.md +122 -0
  11. forge/ast/__init__.py +31 -0
  12. forge/ast/__init__.pyi +7 -0
  13. forge/ast/grammar.lark +334 -0
  14. forge/ast/grammar.py +52 -0
  15. forge/ast/identifiers.py +91 -0
  16. forge/ast/metadata.py +98 -0
  17. forge/ast/nodes.py +1585 -0
  18. forge/ast/nodes.pyi +318 -0
  19. forge/ast/parse.py +568 -0
  20. forge/ast/pre_parser.py +411 -0
  21. forge/ast/utils.py +91 -0
  22. forge/builtin_stubs.py +281 -0
  23. forge/builtins/DA/Action/State/Class.vy +14 -0
  24. forge/builtins/DA/Action/State.vy +17 -0
  25. forge/builtins/DA/Assert.vy +36 -0
  26. forge/builtins/DA/Crypto/Text.vy +178 -0
  27. forge/builtins/DA/Date/Types.vy +31 -0
  28. forge/builtins/DA/Date.vy +67 -0
  29. forge/builtins/DA/Either.vy +61 -0
  30. forge/builtins/DA/Exception/ArithmeticError.vy +6 -0
  31. forge/builtins/DA/Exception/AssertionFailed.vy +6 -0
  32. forge/builtins/DA/Exception/GeneralError.vy +6 -0
  33. forge/builtins/DA/Exception/PreconditionFailed.vy +6 -0
  34. forge/builtins/DA/Internal/Assert.vy +23 -0
  35. forge/builtins/DA/Internal/Compatible.vy +57 -0
  36. forge/builtins/DA/Internal/Date.vy +13 -0
  37. forge/builtins/DA/Internal/Down.vy +10 -0
  38. forge/builtins/DA/Internal/Erased.vy +8 -0
  39. forge/builtins/DA/Internal/Exception.vy +12 -0
  40. forge/builtins/DA/Internal/Fail.vy +11 -0
  41. forge/builtins/DA/Internal/Interface/AnyView.vy +18 -0
  42. forge/builtins/DA/Internal/Interface.vy +54 -0
  43. forge/builtins/DA/Internal/LF.vy +28 -0
  44. forge/builtins/DA/Internal/NatSyn.vy +12 -0
  45. forge/builtins/DA/Internal/Prelude.vy +186 -0
  46. forge/builtins/DA/Internal/PromotedText.vy +12 -0
  47. forge/builtins/DA/Internal/Record.vy +16 -0
  48. forge/builtins/DA/Internal/Template/Functions.vy +130 -0
  49. forge/builtins/DA/Internal/Template.vy +6 -0
  50. forge/builtins/DA/Internal/Time.vy +22 -0
  51. forge/builtins/DA/List/BuiltinOrder.vy +22 -0
  52. forge/builtins/DA/List/Total.vy +21 -0
  53. forge/builtins/DA/List.vy +135 -0
  54. forge/builtins/DA/Logic/Types.vy +35 -0
  55. forge/builtins/DA/Logic.vy +57 -0
  56. forge/builtins/DA/Map.vy +61 -0
  57. forge/builtins/DA/Math.vy +66 -0
  58. forge/builtins/DA/Maybe.vy +46 -0
  59. forge/builtins/DA/Monoid/Types.vy +25 -0
  60. forge/builtins/DA/NonEmpty/Types.vy +11 -0
  61. forge/builtins/DA/NonEmpty.vy +37 -0
  62. forge/builtins/DA/Numeric.vy +113 -0
  63. forge/builtins/DA/Optional.vy +46 -0
  64. forge/builtins/DA/Random/Types.vy +13 -0
  65. forge/builtins/DA/Random.vy +19 -0
  66. forge/builtins/DA/Semigroup/Types.vy +15 -0
  67. forge/builtins/DA/Set/Types.vy +11 -0
  68. forge/builtins/DA/Set.vy +81 -0
  69. forge/builtins/DA/Stack/Types.vy +14 -0
  70. forge/builtins/DA/Stack.vy +33 -0
  71. forge/builtins/DA/Text.vy +192 -0
  72. forge/builtins/DA/TextMap.vy +53 -0
  73. forge/builtins/DA/Time/Types.vy +6 -0
  74. forge/builtins/DA/Time.vy +72 -0
  75. forge/builtins/DA/Tuple.vy +26 -0
  76. forge/builtins/DA/Types.vy +329 -0
  77. forge/builtins/DA/Validation/Types.vy +25 -0
  78. forge/builtins/DA/Validation.vy +34 -0
  79. forge/builtins/GHC/Base.vy +13 -0
  80. forge/builtins/GHC/Classes.vy +43 -0
  81. forge/builtins/GHC/Enum.vy +86 -0
  82. forge/builtins/GHC/Err.vy +10 -0
  83. forge/builtins/GHC/Num.vy +32 -0
  84. forge/builtins/GHC/Show/Text.vy +72 -0
  85. forge/builtins/GHC/Show.vy +38 -0
  86. forge/builtins/GHC/Stack/Types.vy +53 -0
  87. forge/builtins/GHC/Tuple.vy +10 -0
  88. forge/builtins/GHC/Types.vy +10 -0
  89. forge/builtins/Splice/Amulet/CryptoHash.vy +59 -0
  90. forge/builtins/Splice/Amulet/RewardAccountingV2.vy +67 -0
  91. forge/builtins/Splice/Amulet/TokenApiUtils.vy +217 -0
  92. forge/builtins/Splice/Amulet/TwoStepTransfer.vy +43 -0
  93. forge/builtins/Splice/Amulet.vy +442 -0
  94. forge/builtins/Splice/AmuletAllocation.vy +54 -0
  95. forge/builtins/Splice/AmuletAllocationV2.vy +53 -0
  96. forge/builtins/Splice/AmuletConfig.vy +147 -0
  97. forge/builtins/Splice/AmuletEventLog.vy +8 -0
  98. forge/builtins/Splice/AmuletRules.vy +901 -0
  99. forge/builtins/Splice/AmuletTransferInstruction.vy +37 -0
  100. forge/builtins/Splice/Ans/AmuletConversionRateFeed.vy +42 -0
  101. forge/builtins/Splice/Ans.vy +173 -0
  102. forge/builtins/Splice/Api/FeaturedAppRightV1.vy +41 -0
  103. forge/builtins/Splice/Api/FeaturedAppRightV2.vy +41 -0
  104. forge/builtins/Splice/Api/RewardAssignmentV1.vy +36 -0
  105. forge/builtins/Splice/Api/Token/AllocationInstructionV1.vy +92 -0
  106. forge/builtins/Splice/Api/Token/AllocationInstructionV2.vy +132 -0
  107. forge/builtins/Splice/Api/Token/AllocationRequestV1.vy +32 -0
  108. forge/builtins/Splice/Api/Token/AllocationRequestV2.vy +96 -0
  109. forge/builtins/Splice/Api/Token/AllocationV1.vy +91 -0
  110. forge/builtins/Splice/Api/Token/AllocationV2.vy +210 -0
  111. forge/builtins/Splice/Api/Token/BurnMintV1.vy +41 -0
  112. forge/builtins/Splice/Api/Token/HoldingV1.vy +30 -0
  113. forge/builtins/Splice/Api/Token/HoldingV2.vy +36 -0
  114. forge/builtins/Splice/Api/Token/MetadataV1.vy +113 -0
  115. forge/builtins/Splice/Api/Token/Test/DummyHolding.vy +10 -0
  116. forge/builtins/Splice/Api/Token/Test/DummyTwoInterfaces.vy +13 -0
  117. forge/builtins/Splice/Api/Token/TransferEventsV2.vy +42 -0
  118. forge/builtins/Splice/Api/Token/TransferInstructionV1.vy +135 -0
  119. forge/builtins/Splice/Api/Token/TransferInstructionV2.vy +159 -0
  120. forge/builtins/Splice/AppManager/Store.vy +52 -0
  121. forge/builtins/Splice/CometBft.vy +56 -0
  122. forge/builtins/Splice/DSO/AmuletPrice.vy +24 -0
  123. forge/builtins/Splice/DSO/DecentralizedSynchronizer.vy +100 -0
  124. forge/builtins/Splice/DSO/SvState.vy +67 -0
  125. forge/builtins/Splice/DecentralizedSynchronizer.vy +54 -0
  126. forge/builtins/Splice/DsoBootstrap.vy +40 -0
  127. forge/builtins/Splice/DsoRules.vy +1077 -0
  128. forge/builtins/Splice/Expiry.vy +92 -0
  129. forge/builtins/Splice/ExternalPartyAmuletRules.vy +146 -0
  130. forge/builtins/Splice/ExternalPartyConfigState.vy +20 -0
  131. forge/builtins/Splice/Fees.vy +125 -0
  132. forge/builtins/Splice/Issuance.vy +79 -0
  133. forge/builtins/Splice/RelRound.vy +16 -0
  134. forge/builtins/Splice/Round.vy +80 -0
  135. forge/builtins/Splice/Schedule.vy +54 -0
  136. forge/builtins/Splice/Splitwell.vy +238 -0
  137. forge/builtins/Splice/SvOnboarding.vy +53 -0
  138. forge/builtins/Splice/Testing/Apps/TradingApp.vy +78 -0
  139. forge/builtins/Splice/Testing/Apps/TradingAppV2.vy +159 -0
  140. forge/builtins/Splice/Testing/Tokens/TestTokenV1.vy +50 -0
  141. forge/builtins/Splice/Testing/Tokens/TestTokenV2/AccountConfig.vy +212 -0
  142. forge/builtins/Splice/Testing/Tokens/TestTokenV2/Allocation.vy +140 -0
  143. forge/builtins/Splice/Testing/Tokens/TestTokenV2/Holding.vy +20 -0
  144. forge/builtins/Splice/Testing/Tokens/TestTokenV2/Transfer.vy +60 -0
  145. forge/builtins/Splice/Testing/Tokens/TestTokenV2/Util.vy +47 -0
  146. forge/builtins/Splice/Testing/Tokens/TestTokenV2.vy +40 -0
  147. forge/builtins/Splice/TokenStandard/Utils/Internal/Allocations.vy +251 -0
  148. forge/builtins/Splice/TokenStandard/Utils/Internal/Choices.vy +71 -0
  149. forge/builtins/Splice/TokenStandard/Utils/Internal/Conversions.vy +229 -0
  150. forge/builtins/Splice/TokenStandard/Utils/Internal/Events.vy +77 -0
  151. forge/builtins/Splice/TokenStandard/Utils/Internal/Transfers.vy +50 -0
  152. forge/builtins/Splice/TokenStandard/Utils.vy +5 -0
  153. forge/builtins/Splice/Types.vy +25 -0
  154. forge/builtins/Splice/Util/FeaturedApp/BatchedMarkersProxy.vy +47 -0
  155. forge/builtins/Splice/Util/FeaturedApp/DelegateProxy.vy +68 -0
  156. forge/builtins/Splice/Util/FeaturedApp/WalletUserProxy.vy +127 -0
  157. forge/builtins/Splice/Util/Token/Wallet/BatchingUtilityV2.vy +270 -0
  158. forge/builtins/Splice/Util/Token/Wallet/MergeDelegation.vy +130 -0
  159. forge/builtins/Splice/Util.vy +116 -0
  160. forge/builtins/Splice/ValidatorLicense.vy +164 -0
  161. forge/builtins/Splice/ValidatorOnboarding.vy +42 -0
  162. forge/builtins/Splice/Wallet/BuyTrafficRequest.vy +56 -0
  163. forge/builtins/Splice/Wallet/Install.vy +469 -0
  164. forge/builtins/Splice/Wallet/MintingDelegation.vy +83 -0
  165. forge/builtins/Splice/Wallet/Payment.vy +160 -0
  166. forge/builtins/Splice/Wallet/Subscriptions.vy +233 -0
  167. forge/builtins/Splice/Wallet/TopUpState.vy +22 -0
  168. forge/builtins/Splice/Wallet/TransferOffer.vy +114 -0
  169. forge/builtins/Splice/Wallet/TransferPreapproval.vy +27 -0
  170. forge/builtins/__init__.py +618 -0
  171. forge/builtins/daml_lang.py +161 -0
  172. forge/builtins/maps.py +78 -0
  173. forge/cli/__init__.py +14 -0
  174. forge/cli/forge_daml.py +95 -0
  175. forge/cli/forge_dar.py +189 -0
  176. forge/cli/forge_json.py +26 -0
  177. forge/cli/main.py +207 -0
  178. forge/codegen/__init__.py +19 -0
  179. forge/codegen/doc.py +78 -0
  180. forge/codegen/emit.py +1384 -0
  181. forge/codegen/loops.py +24 -0
  182. forge/codegen/maps.py +76 -0
  183. forge/codegen/optional.py +54 -0
  184. forge/codegen/self_mutation.py +358 -0
  185. forge/codegen/sets.py +55 -0
  186. forge/codegen/source_map.py +263 -0
  187. forge/compiler/__init__.py +14 -0
  188. forge/compiler/settings.py +92 -0
  189. forge/daml_versions.py +112 -0
  190. forge/exceptions.py +459 -0
  191. forge/ir/__init__.py +18 -0
  192. forge/ir/fields.py +84 -0
  193. forge/ir/imports.py +217 -0
  194. forge/ir/lower.py +904 -0
  195. forge/ir/nodes.py +399 -0
  196. forge/ir/normalize.py +853 -0
  197. forge/models/__init__.py +53 -0
  198. forge/models/decorators.py +48 -0
  199. forge/models/error_codes.py +53 -0
  200. forge/models/types.py +30 -0
  201. forge/semantics/__init__.py +40 -0
  202. forge/semantics/analysis/__init__.py +14 -0
  203. forge/semantics/analysis/imports.py +453 -0
  204. forge/semantics/analysis/intrinsics.py +480 -0
  205. forge/semantics/analysis/module.py +360 -0
  206. forge/semantics/analysis/primitive_values.py +320 -0
  207. forge/semantics/analysis/structure.py +767 -0
  208. forge/semantics/analysis/typecheck.py +947 -0
  209. forge/semantics/analysis/types.py +1234 -0
  210. forge/semantics/primitive_specs.py +277 -0
  211. forge/stubgen/__init__.py +78 -0
  212. forge/stubgen/dar.py +86 -0
  213. forge/stubgen/exports.py +46 -0
  214. forge/stubgen/lf2.py +88 -0
  215. forge/stubgen/parties.py +128 -0
  216. forge/stubgen/render.py +571 -0
  217. forge/utils.py +713 -0
  218. forge/version.py +4 -0
  219. forge/warnings.py +75 -0
@@ -0,0 +1,336 @@
1
+ Metadata-Version: 2.4
2
+ Name: damlforge
3
+ Version: 0.0.13
4
+ Summary: DamlForge: a Pythonic contract-authoring language for Daml/Canton
5
+ Home-page: https://github.com/noders-team/damlforge
6
+ Author: Artem Bogomaz
7
+ Author-email: artembogomaz@gmail.com
8
+ Maintainer: Noders Team
9
+ License: Apache License 2.0
10
+ Keywords: daml canton smart contract language
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: Apache Software License
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Requires-Python: >=3.11,<4
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: cbor2<6,>=5.4.6
21
+ Requires-Dist: pycryptodome<4,>=3.5.1
22
+ Requires-Dist: packaging>=23.1
23
+ Requires-Dist: lark<2,>=1.0.0
24
+ Requires-Dist: wheel
25
+ Requires-Dist: immutables
26
+ Requires-Dist: loguru
27
+ Requires-Dist: pyyaml
28
+ Requires-Dist: click<9,>=8.1
29
+ Provides-Extra: stubgen
30
+ Requires-Dist: dazl>=8.9; extra == "stubgen"
31
+ Dynamic: author
32
+ Dynamic: author-email
33
+ Dynamic: classifier
34
+ Dynamic: description
35
+ Dynamic: description-content-type
36
+ Dynamic: home-page
37
+ Dynamic: keywords
38
+ Dynamic: license
39
+ Dynamic: license-file
40
+ Dynamic: maintainer
41
+ Dynamic: requires-python
42
+ Dynamic: summary
43
+
44
+ # DamlForge
45
+
46
+ DamlForge compiles `.vy` files (Python syntax, Vyper-flavored keywords) into real Daml/Canton `.daml` source. See [`.claude/skills/damlforge-vy-lang/`](.claude/skills/damlforge-vy-lang/SKILL.md) for the full language reference.
47
+
48
+ ## User guide
49
+
50
+ The guide in [`docs/guide/`](docs/guide) walks through DamlForge from setup to
51
+ packaging. Every example in it compiles with `forge dar` and is covered by a
52
+ passing Daml Script test.
53
+
54
+ | # | Page | Covers |
55
+ |---|---|---|
56
+ | 1 | [Development Environment Setup](docs/guide/01-dev-environment.md) | Installing DPM and DamlForge, creating a project, editor setup, day-to-day commands |
57
+ | 2 | [Language Fundamentals](docs/guide/02-language-fundamentals.md) | Types, structs, enums, variants, `Optional`, functions, control flow, dates, imports |
58
+ | 3 | [Compiler Errors](docs/guide/03-compiler-errors.md) | Every `DF` error code, with the message, cause, and fix |
59
+ | 4 | [Contract Templates](docs/guide/04-contract-templates.md) | Templates, signatories, observers, `ensure`, testing with Daml Script |
60
+ | 5 | [Choices](docs/guide/05-choices.md) | Choices as methods and as delegation, updating a contract in place, consuming and non-consuming choices, a simple cash model |
61
+ | 6 | [Design Patterns](docs/guide/06-design-patterns.md) | Propose-accept, delegation, authorization, locking, multi-party agreements |
62
+ | 7 | [Working with Time](docs/guide/07-working-with-time.md) | `datetime` support, ledger time, deadlines and time windows, `setTime`/`passTime` |
63
+ | 8 | [Contract Keys](docs/guide/08-contract-keys.md) | `key` and `maintainer`, by-key lookups, Daml 3.5 requirements |
64
+ | 9 | [Interfaces](docs/guide/09-interfaces.md) | Declaring and implementing interfaces, views, converting contract IDs |
65
+ | 10 | [Building and Packaging](docs/guide/10-building-packaging.md) | `forge dar`, `daml.yaml` settings, multi-package projects, DAR contents |
66
+ | 11 | [Variants](docs/guide/11-variants.md) | Constructor styles, recursive and generic variants, current limitations |
67
+
68
+ ## Installing
69
+
70
+ DamlForge is published on PyPI as `damlforge`. It installs the `forge` command and the `forge` Python package:
71
+
72
+ ```bash
73
+ python -m venv .venv
74
+ source .venv/bin/activate # .venv\Scripts\activate on Windows
75
+ pip install damlforge
76
+ ```
77
+
78
+ ### Using DamlForge in another project
79
+
80
+ Add DamlForge as a dependency of the project that holds your `.vy` contracts.
81
+
82
+ With pip, pin it in `requirements.txt`:
83
+
84
+ ```text
85
+ damlforge==<version>
86
+ ```
87
+
88
+ Use `damlforge[stubgen]==<version>` instead if you also run `forge stubs`. Then install and build:
89
+
90
+ ```bash
91
+ pip install -r requirements.txt
92
+ forge dar path/to/daml_project -o out.dar
93
+ ```
94
+
95
+ With Poetry, add it to a dev group, since it's only needed at build time:
96
+
97
+ ```bash
98
+ poetry add --group dev damlforge@<version>
99
+ poetry add --group dev 'damlforge[stubgen]@<version>' # if you also run forge stubs
100
+ ```
101
+
102
+ This records it in your `pyproject.toml`:
103
+
104
+ ```toml
105
+ [tool.poetry.group.dev.dependencies]
106
+ damlforge = { version = "<version>", extras = ["stubgen"] }
107
+ ```
108
+
109
+ Leave out `extras` if you don't need `forge stubs`. Run the compiler through Poetry's environment:
110
+
111
+ ```bash
112
+ poetry install
113
+ poetry run forge dar path/to/daml_project -o out.dar
114
+ ```
115
+
116
+ The stubs for the Daml standard library (`DA.*`, `GHC.*`), Splice (`Splice.*`), `forge.models`, and `forge.builtins` ship inside the package. Once it's installed, `.vy` files import them directly, with no extra path setup:
117
+
118
+ ```python
119
+ from DA.List import sort
120
+ from forge.builtins.daml_lang import create
121
+ from forge.models import Party, choice, template
122
+ ```
123
+
124
+ Splice stubs also need the matching Splice DAR in `data-dependencies` in `daml.yaml`. See [Development Environment Setup](docs/guide/01-dev-environment.md#as-a-dependency-of-your-own-project) and [Building and Packaging](docs/guide/10-building-packaging.md#using-other-packages-from-vy).
125
+
126
+ ### Installing from GitHub Releases
127
+
128
+ Releases are also built by CI on every `v*.*.*` tag and attached to the corresponding [GitHub Release](https://github.com/noders-team/damlforge/releases) as `damlforge-<version>-py3-none-any.whl`, which installs with `pip install damlforge-<version>-py3-none-any.whl`.
129
+
130
+ ### Publishing to PyPI
131
+
132
+ `.github/workflows/publish-pypi.yml` is started by hand from the Actions tab (**Run workflow**) with the version to publish. It builds the sdist and wheel with that version and uploads them through PyPI trusted publishing, so no API token is stored in the repository.
133
+
134
+ ## Using it
135
+
136
+ Installing the wheel puts a `forge` command on your `PATH`. It's a [Click](https://click.palletsprojects.com/) CLI with a subcommand per compile target:
137
+
138
+ ```bash
139
+ forge --help # top-level usage and subcommand list
140
+ forge --version # installed forge version
141
+ forge daml --help # per-subcommand usage (also: forge dar, forge json, forge stubs)
142
+ ```
143
+
144
+ ```bash
145
+ forge daml path/to/file.vy -o out/ # .vy -> out/<Module>.daml + out/<Module>.map.json
146
+ forge daml path/to/vy_source_dir -o out/ # compiles top-level .vy files in the directory
147
+ forge dar path/to/vy_project -o out.dar # compile the project and build a real .dar
148
+ forge json path/to/file.vy --pretty-json # .vy -> JSON AST, printed to stdout
149
+ forge stubs input.dar -o generated/ # .dar -> generated .vy stubs
150
+ ```
151
+
152
+ `forge <path> [options]` (no subcommand) is shorthand for `forge daml <path> [options]`.
153
+
154
+ `forge daml` writes a JSON source map next to each `.daml` file. Directory input is
155
+ intentionally non-recursive; `forge dar` recursively compiles every `.vy` below the
156
+ project's configured `source` directory. Use `--no-i` with `forge daml` to stop at the
157
+ first compile error; the default is to continue with the remaining files. Add
158
+ `--traceback` to any subcommand for a Python traceback instead of a short error message.
159
+
160
+ ## Daml projects and DARs
161
+
162
+ `forge dar` compiles into an existing Daml project. The project must contain a
163
+ `daml.yaml` with `name`, `source`, `version`, and a non-empty `dependencies` list.
164
+ `data-dependencies` are supported and are checked before invoking DPM. Generated
165
+ `.daml` files are written under the configured source directory, then DamlForge runs
166
+ `dpm build` to produce the DAR.
167
+
168
+ By default DPM is searched for on `PATH`, then at `~/.dpm/bin/dpm`; use `--dpm PATH`
169
+ when it is installed elsewhere. For example:
170
+
171
+ ```bash
172
+ forge dar examples/splice-util-batched-markers \
173
+ -o examples/splice-util-batched-markers/splice-util-batched-markers-current.dar
174
+ ```
175
+
176
+ When validating tests that exercise templates from data dependencies, use the Daml
177
+ test runner's all-packages mode:
178
+
179
+ ```bash
180
+ daml test --all
181
+ ```
182
+
183
+ ## Generating `.vy` stubs
184
+
185
+ The optional stub generator reconstructs supported Daml-LF declarations from a DAR.
186
+ Install its extra dependency with `pip install 'damlforge[stubgen]'`. It accepts either a
187
+ DAR file or a Daml project directory (the latter is built with DPM first):
188
+
189
+ ```bash
190
+ forge stubs path/to/package.dar -o generated/
191
+ forge stubs path/to/daml_project -o generated/ --dpm /path/to/dpm
192
+ forge stubs path/to/package.dar --module Some.Module --module Other.Module
193
+ ```
194
+
195
+ The `--module` option may be repeated and selects modules from the main package or
196
+ its dependencies. Unsupported declarations are skipped and reported by the command.
197
+
198
+ ## Variants
199
+
200
+ Use `@variant` on a class to define a Daml variant. Each method declares one
201
+ constructor; its parameters are the constructor payload:
202
+
203
+ ```python
204
+ from datetime import datetime
205
+
206
+ from forge.models import Party, variant_record
207
+
208
+ @variant
209
+ class Result:
210
+ def Accepted(value: Party): pass
211
+ def Cancelled(): pass
212
+
213
+ @variant_record
214
+ def Deferred(reason: str, retry_at: datetime): pass
215
+ ```
216
+
217
+ This generates positional constructors for ordinary methods and a named-field
218
+ constructor for the method marked `@variant_record`:
219
+
220
+ ```daml
221
+ data Result
222
+ = Accepted Party
223
+ | Cancelled
224
+ | Deferred with
225
+ reason : Text
226
+ retry_at : Time
227
+ deriving (Eq, Show)
228
+ ```
229
+
230
+ `@variant` is a DamlForge class marker, like `@template`, and does not need an
231
+ import. `@variant_record` is an ordinary method decorator and must be imported.
232
+ Use it only when the Daml constructor must use `with` fields; otherwise the
233
+ parameter names are not part of the generated Daml API.
234
+
235
+ Generated derivations follow `daml.yaml`: Daml 3.4 uses inferred serializability;
236
+ Daml 3.5 adds `Serializable` only when `--explicit-serializable=yes` is enabled.
237
+
238
+ See [Variants](docs/guide/11-variants.md) for constructing and comparing values,
239
+ recursive and generic variants, and what isn't supported yet.
240
+
241
+ ## Enums
242
+
243
+ Use Python's `Enum` syntax. Members must be bare names or use `auto()`; explicit
244
+ values are rejected. Only member names become Daml constructors:
245
+
246
+ ```python
247
+ from enum import Enum, auto
248
+
249
+ class Status(Enum):
250
+ PENDING = auto()
251
+ COMPLETE = auto()
252
+ ```
253
+
254
+ This generates `data Status = PENDING | COMPLETE` in Daml.
255
+
256
+ ## Dates and time
257
+
258
+ Use Python's standard `datetime` types directly in `.vy` contracts; do not
259
+ import `Date`, `Timestamp`, or `RelTime` from `forge.models`:
260
+
261
+ ```python
262
+ from datetime import date, datetime, time, timedelta, timezone
263
+
264
+ def epoch() -> date:
265
+ return date(1970, 1, 1)
266
+
267
+ def next_week(start: datetime) -> datetime:
268
+ return start + timedelta(days=7)
269
+
270
+ def midnight(value: date) -> datetime:
271
+ return datetime.combine(value, time())
272
+
273
+ def from_seconds(seconds: int) -> datetime:
274
+ return datetime.fromtimestamp(seconds, timezone.utc)
275
+ ```
276
+
277
+ `date`, `datetime`, and `timedelta` compile to Daml `Date`, `Time`, and
278
+ `RelTime`. `datetime.now()` compiles to the Daml update operation `getTime`; DamlForge
279
+ infers the enclosing function's `Update` return type automatically.
280
+
281
+ Only these constructs are translated, not the whole `datetime` module. See
282
+ [Working with Time](docs/guide/07-working-with-time.md) for the full list of
283
+ supported forms, the `DA.Date` helpers to use instead of the rest, and ledger time.
284
+
285
+ ## Upgrading
286
+
287
+ Upgrade in place:
288
+
289
+ ```bash
290
+ pip install -U damlforge==<new-version>
291
+ ```
292
+
293
+ If you installed the old `forge` wheel from GitHub Releases, run `pip uninstall forge` first, since the distribution was renamed to `damlforge`.
294
+
295
+ ## Building the wheel yourself
296
+
297
+ If you have the source checked out:
298
+
299
+ ```bash
300
+ pip install build
301
+ python -m build # or: make build
302
+ ```
303
+
304
+ produces `dist/damlforge-<version>-py3-none-any.whl`, versioned from the nearest git tag (see `Makefile`'s `build`/`release` targets and `.github/workflows/build-wheel.yml`).
305
+
306
+ ## Local development
307
+
308
+ ```bash
309
+ python -m venv .venv
310
+ source .venv/bin/activate
311
+ pip install -e . # installs forge + runtime deps (click, etc.) in editable mode
312
+ pip install --group test # pytest + friends
313
+ pip install --group lint # black/flake8/isort/mypy
314
+ ```
315
+
316
+ `--group` needs `pip>=25.1` (`pip install -U pip` first if needed); otherwise install the pinned packages listed under `[dependency-groups]` in `pyproject.toml` directly.
317
+
318
+ With an editable install, `forge`/`python -m forge` picks up changes under `forge/` immediately - no reinstall needed:
319
+
320
+ ```bash
321
+ forge --help
322
+ forge daml examples/basic/simple.vy -o /tmp/out && cat /tmp/out/Simple*.daml
323
+ ```
324
+
325
+ Run the test suite and linters:
326
+
327
+ ```bash
328
+ pytest -q # or: make test
329
+ make lint # mypy, black, flake8, isort in sequence
330
+ ```
331
+
332
+ ## License
333
+
334
+ DamlForge is licensed under the [Apache License, Version 2.0](LICENSE).
335
+
336
+ Copyright 2026 Noders Team. Author: Artem Bogomaz <artembogomaz@gmail.com>.
@@ -0,0 +1,219 @@
1
+ damlforge-0.0.13.data/data/damlforge_git_commithash.txt,sha256=3D_1pvg_8E-LAdKgCoZznISTjhgUJEqicXv0eDK6r9I,7
2
+ damlforge-0.0.13.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
3
+ forge/__init__.py,sha256=lnCYVe7J83JdAY8_eOK1vCYBXD6rQMWTJihUJgLJkBE,1265
4
+ forge/__main__.py,sha256=1P65S1JCHYyEZeI09JsvE_AEpH5HJX8cHXwK4R4dka0,741
5
+ forge/builtin_stubs.py,sha256=wSDtDs__T3cMSW8cxVCdz9QG1BGg7o9CuJgxsXP65DA,10542
6
+ forge/daml_versions.py,sha256=CtzLgTTNgWXBU1OkRvvcuPvsh7lYH6T7fY4AahD6Vys,4287
7
+ forge/exceptions.py,sha256=AH0ai856oA8Ff5iHZh1xRl01anPJtTTWlXm8M7QRVvA,13935
8
+ forge/utils.py,sha256=fG3bMqoOIQ9L7xVw9z09Yp6eHnjdFaxrGU1dnZ-lLDY,20520
9
+ forge/version.py,sha256=hFF7tqYJ7eYZR_Ae6XErILfdXmw4giGBpShfPqnr5tg,162
10
+ forge/warnings.py,sha256=0Aym_UFc-335jqFfQFSGcCS-yVI6sN3O4dSnJVyJtKg,2191
11
+ forge/ast/README.md,sha256=oTMSpMNEQQqyho26XUMHWGDyLGI1jbbb5UL8jR25Dsw,4401
12
+ forge/ast/__init__.py,sha256=COtHvQ6bS6fH71yOACfdaiawVMdRARxm0Id_y0lQ-h4,996
13
+ forge/ast/__init__.pyi,sha256=cAFzouOY5gJwsnTorWpDfUkkZy3mDoiwk9sFqGrlSX8,201
14
+ forge/ast/grammar.lark,sha256=VUdCJok3sw_jC6b-mfsSE8XMmSDa0CyiB_LGCT1bUXw,10363
15
+ forge/ast/grammar.py,sha256=1rIf9-6WvaoggHwcJL4ov4b3_X-RlaXvLRTezSv1xs8,1452
16
+ forge/ast/identifiers.py,sha256=wWdnwnGED16Api7bRmGcNato38r0DWzcxboTZOpe4Tc,2184
17
+ forge/ast/metadata.py,sha256=szQD4eVggu-xFQQoPrI0SwNvbw80nFlprgtFAU512sI,3171
18
+ forge/ast/nodes.py,sha256=8zpGtf2ykd7dDqBd5EDnJR-yEvOs-BkKXQnNDJX4wDk,45095
19
+ forge/ast/nodes.pyi,sha256=adu98cCQ9KliOhxOsDYzMc6dnTmwkXqb_F5tQcDnwUA,7156
20
+ forge/ast/parse.py,sha256=oLN4P5nbkqsOIJbCmUHp4S-MTD_UF7HCJcuzQC1z31w,19832
21
+ forge/ast/pre_parser.py,sha256=CMMsdzGPjNOYf_TWTDvRcqM-LA83c0MmXJkcvExFjGI,16008
22
+ forge/ast/utils.py,sha256=mYuMpIjRrJXirlXXhKD1txjz-augPHOAd6DEYgJ3Qf0,3192
23
+ forge/builtins/__init__.py,sha256=Wd8kI8J0hN31BskUr3d__W6g6kJT0NRBdh9lZz9sL18,22326
24
+ forge/builtins/daml_lang.py,sha256=O07T0-SzxMMi9dDok6o6W3hV-NZxF0q13MqNnDpuFQ4,5721
25
+ forge/builtins/maps.py,sha256=w3iq2sahWWJ-1uay_6a1ruUwlIvFhcu5_-LkuGuXi08,2038
26
+ forge/builtins/DA/Assert.vy,sha256=Xg3fDgAACvKgxUhEO4sagBXVLaA8rziOJDN2rTtOWUA,871
27
+ forge/builtins/DA/Date.vy,sha256=OS8i040XiBCZfqi5TMhetx-AwZT9EoGQqbtOUqMVJ50,1155
28
+ forge/builtins/DA/Either.vy,sha256=DNfQcO0QmGIHqvM6G9IpcMTBHLiQYv3RFXkac53IHd4,1123
29
+ forge/builtins/DA/List.vy,sha256=qW5thF4FTtvxK1oo6EBW3RAT4-RmMh67xA_msJlOzEQ,2357
30
+ forge/builtins/DA/Logic.vy,sha256=QA3cdyLrAG4wSjOLVLAE0EypLcli-5VuvltyD_zF5hw,898
31
+ forge/builtins/DA/Map.vy,sha256=0mWeKnABdVCYoxMDVoHZRuzeRQGKdCENMMoDngNeceY,960
32
+ forge/builtins/DA/Math.vy,sha256=68SAIjfMZ6FMAiBr1ZzgojstnlsqpURAU55Gec2ZuDY,1063
33
+ forge/builtins/DA/Maybe.vy,sha256=ORVWBrcsRoGhF6QZ4tjqWNpIJaACVzBp0V63EWIDcbM,805
34
+ forge/builtins/DA/NonEmpty.vy,sha256=qToLOjIaHTmYBoYAIi2QPVGfwp9VLAZ8UqiE9cK99jA,627
35
+ forge/builtins/DA/Numeric.vy,sha256=NkVvEIXKZzbKkx0MMCAFiQFGybvnyPzoG2u59-FM4VQ,1879
36
+ forge/builtins/DA/Optional.vy,sha256=pcR7vIzS-OOCB5VD4W6iPGkqsZxKeSOP9nq6dCR5dow,816
37
+ forge/builtins/DA/Random.vy,sha256=VjZ-seeQN5lO-fO36qRPaL4gd2sNVoUgb6yEVE89cUA,345
38
+ forge/builtins/DA/Set.vy,sha256=R10NV2KlvoayDjBfEFU3u_Xv9iywcmu4Sy1NEjrycn4,1237
39
+ forge/builtins/DA/Stack.vy,sha256=EDUBCEDi-DzOmLyeRwVUuKcPRuZbouNSxcJKf2J26uo,647
40
+ forge/builtins/DA/Text.vy,sha256=BUkxsJIvll2a34wQAQP9G-CSIQtQgUAj7pqZubSatrA,2955
41
+ forge/builtins/DA/TextMap.vy,sha256=Acu7uiETs82NCGX6QPDG_G2Ar6RSiaeWJZ4aJ3A02IY,866
42
+ forge/builtins/DA/Time.vy,sha256=Pdho7Uoi5j-AGtI12YIJn5XLRXg9Sy6xz100qs3Uo7o,1280
43
+ forge/builtins/DA/Tuple.vy,sha256=SQwHT-J6HzmyooH7_G4RtdLtK4ErNilZUo9158tW5x8,349
44
+ forge/builtins/DA/Types.vy,sha256=07wJh60V8ho5WIicJGuVAd88p4BoLo5qOaQmPkkZsE0,4897
45
+ forge/builtins/DA/Validation.vy,sha256=AlX8wjsek1LE6GVsCloo0M0Fhpqe7CmNQMJ2uwEQ9Ow,644
46
+ forge/builtins/DA/Action/State.vy,sha256=OuG7nVVW7VaoBl5HVFt4adrzsOIwdacL1VNS42g7F7I,296
47
+ forge/builtins/DA/Action/State/Class.vy,sha256=OslAtm-jE-hSZlUNfViQo4RxSLqapStAnyrkSNnQZO8,187
48
+ forge/builtins/DA/Crypto/Text.vy,sha256=cXdnJjYvzWUvMcrbQpn9C1AcBcav0RrvdQdx6bkScLI,2827
49
+ forge/builtins/DA/Date/Types.vy,sha256=RvwaXMbW04yW76bd_SJJI6yogUNKvNB2cNsW7SiQM64,553
50
+ forge/builtins/DA/Exception/ArithmeticError.vy,sha256=F643S8gWDVei3AZRoDJA6NGvsmzT2g2S5aehwofi-FU,91
51
+ forge/builtins/DA/Exception/AssertionFailed.vy,sha256=0ESEh92Vg-GaOOIFRY0WEGO1kRq_N58GNreNSYOFIw4,91
52
+ forge/builtins/DA/Exception/GeneralError.vy,sha256=Ca2_USTvMZL6KNgHw-zr2Vsh-4ShqcZ7HtdTuCzoec4,88
53
+ forge/builtins/DA/Exception/PreconditionFailed.vy,sha256=7j6zINFSL-o3MCHT8ld4YWeAmJtHCilRZeYcfKy1Qsg,94
54
+ forge/builtins/DA/Internal/Assert.vy,sha256=Qw8QbAZl2AkEI360aqTsl8K5M6xgSubxgNkcBs1bvIc,499
55
+ forge/builtins/DA/Internal/Compatible.vy,sha256=ZCEhJ0zgrlBtiQY9ddwBDs_feDaCcE_mPS5ZRwF8fNk,715
56
+ forge/builtins/DA/Internal/Date.vy,sha256=T4IIXo07795fJQF81zxD7pZi06y484cDAoRIB0Oy0ck,262
57
+ forge/builtins/DA/Internal/Down.vy,sha256=YAai2ABufTrsuDuGgp21IxFkLBCFTib5gLiUEZtySSg,144
58
+ forge/builtins/DA/Internal/Erased.vy,sha256=5dIYPpZWdD1Jw_7VA8JbL0sL85AejAY7XdRM5ymvvO4,115
59
+ forge/builtins/DA/Internal/Exception.vy,sha256=RoBbt-47BepBgvSTpOF6lOWkWgD1Z-IzzQO4i8WAw6s,142
60
+ forge/builtins/DA/Internal/Fail.vy,sha256=ZgGRxJ0L4noze84aBWLSnv-yNpVpwmd-gW-ic1t-QZI,237
61
+ forge/builtins/DA/Internal/Interface.vy,sha256=0q8GYmux5gmWJ9b2XkcuWxbdIXaB2YtxdE77klA-50M,1123
62
+ forge/builtins/DA/Internal/LF.vy,sha256=4ZyWfGk8-XjbK8ZeDvE1BSShgmPZ7MO962r_3g1I_yQ,545
63
+ forge/builtins/DA/Internal/NatSyn.vy,sha256=vTrKfcSMg8I10Jge5_y3esIAKpw9kqK0bfJyTtDKgZA,182
64
+ forge/builtins/DA/Internal/Prelude.vy,sha256=gfnSs8er515fOhTiGag1roZtRVzvPzOs_A0pahS2O3E,2827
65
+ forge/builtins/DA/Internal/PromotedText.vy,sha256=SLnKLOYSqWqGS0-VMxFuQKE9bE_BhlXkcrSMyr6HKcE,188
66
+ forge/builtins/DA/Internal/Record.vy,sha256=kF1x3U9B_XWC0e-ni0lbjVJTxYzegv4sLPLUtkDVqRo,223
67
+ forge/builtins/DA/Internal/Template.vy,sha256=UE9e3D-rP5jMF14F8RJ5l0fbWHsZpvyeRWAdSoA44eg,75
68
+ forge/builtins/DA/Internal/Time.vy,sha256=gYyBiUn152MqHjQkIy7TVh8jdzdMvT_Gk-oOdT6exXA,460
69
+ forge/builtins/DA/Internal/Interface/AnyView.vy,sha256=6hlsFxEBi4NBMR1buLQZa3dzPuxtCTHsEBQTkA_cZKI,451
70
+ forge/builtins/DA/Internal/Template/Functions.vy,sha256=DZ021dGbBJxqyM6HofVPZXdXBRS0HiB05LcqdenDDLQ,2449
71
+ forge/builtins/DA/List/BuiltinOrder.vy,sha256=iLas6MmpDnbcR4oUcIdWMjeTfgjeQFmAkiVY5fIZIa0,323
72
+ forge/builtins/DA/List/Total.vy,sha256=0lLha4rR5o3kS0gy7hfwjyNkO6WmAh8s_SuvZpaO_AY,320
73
+ forge/builtins/DA/Logic/Types.vy,sha256=79W_7_JMRy8jX1ryPBpkXkiZuqAJ8MuFRwrHuMn2RI4,795
74
+ forge/builtins/DA/Monoid/Types.vy,sha256=_XR9kpsIIWBYAKp6WlddrcoD70pK_QJIyt8lVOKY8Qg,367
75
+ forge/builtins/DA/NonEmpty/Types.vy,sha256=wUsun7wVlZFViy8g5_4nssSlNzZRhB7D0FOmqY9F9D4,160
76
+ forge/builtins/DA/Random/Types.vy,sha256=6edCd5mrUcsjfCyiD3DJUJnbMp5ATOh2B86XgA_tms0,250
77
+ forge/builtins/DA/Semigroup/Types.vy,sha256=mkajUzXZGPhsaxFQaH2I8MZ0YfCckxODynKhVAkU5qg,194
78
+ forge/builtins/DA/Set/Types.vy,sha256=v8KKFRIRpCaVnkgZma7BXzZ4qj-FVXYrSBgzijGFlE8,186
79
+ forge/builtins/DA/Stack/Types.vy,sha256=PupRxYm4gqOYPaHSZ9E9wh01BIQ1z98-aBMzIboi1So,546
80
+ forge/builtins/DA/Time/Types.vy,sha256=_YLCGPPMnlRaQC0GmAukMb7IrJeyM5u2UMK2HOOzv-w,88
81
+ forge/builtins/DA/Validation/Types.vy,sha256=-XKDgaG2AoDRvAAuq3sb3hLkd__v9nL03maZLlYocE0,552
82
+ forge/builtins/GHC/Base.vy,sha256=LYLC0R3_pqa-x640rcjXp8gyZNQZni3SirprIeZ_6Ds,138
83
+ forge/builtins/GHC/Classes.vy,sha256=Gl4lL0gCR6L_dfnZQ2jFwM56JyhCOB0L-gY1umKaPqo,558
84
+ forge/builtins/GHC/Enum.vy,sha256=hsmJDWwdadBOc4qAJ8XVyqExxAWuxiboE_ifSXyfbfo,1257
85
+ forge/builtins/GHC/Err.vy,sha256=Xv_rfpzvceYRzpCw8UH4lHqEbjNgTk9o1Was21b8hH8,139
86
+ forge/builtins/GHC/Num.vy,sha256=qW521gqmSoyrB68uMZ_s9N4keaCZRfL7KopRqRzTwEU,278
87
+ forge/builtins/GHC/Show.vy,sha256=lwZGYhTgEVvSU6Ukow-qdtmZGlFjTF8EQC0LYVAWah8,604
88
+ forge/builtins/GHC/Tuple.vy,sha256=rGpZtfyiuQz1VPDw_ZXrZCXMeq8qblmx4lXcaN_CvV8,140
89
+ forge/builtins/GHC/Types.vy,sha256=oZ4K183avtt3FclpuFkvh7-cj8nZWPOpMDypWv2S-t4,165
90
+ forge/builtins/GHC/Show/Text.vy,sha256=x8ALFNSoeebDm9QSGIQI-0CqL10vH06pRqVv2DhSEJM,1210
91
+ forge/builtins/GHC/Stack/Types.vy,sha256=Yh9_gFIb67Ituwz0lgoDEqbO8kNHv23FSVLFMN7B348,1428
92
+ forge/builtins/Splice/Amulet.vy,sha256=2PyrzDhrolU75Hr8GR6pFGO89qs21H0_8i3oPrVBpg4,13547
93
+ forge/builtins/Splice/AmuletAllocation.vy,sha256=Co7A9rvNTEZGLW-4m9TsxRJfLJPx9V1GKlmF9CGg4ms,2042
94
+ forge/builtins/Splice/AmuletAllocationV2.vy,sha256=vsfWOLQNofZVxhlw2oVYVltu10oBYT_bsLLoxdJLTE8,2088
95
+ forge/builtins/Splice/AmuletConfig.vy,sha256=XlS3P3xrf97nDnnTpEePynyDJ38eu3Z8BUA0Guc2wSQ,5571
96
+ forge/builtins/Splice/AmuletEventLog.vy,sha256=9IHrZ2tcTpoLYdBsFOju66EJy-MohXm4ZZe8mn-Gu5k,126
97
+ forge/builtins/Splice/AmuletRules.vy,sha256=0RADWpUPPRjR34aHHGB5CEGNhoq9HTEFDrCMt96Gnng,41001
98
+ forge/builtins/Splice/AmuletTransferInstruction.vy,sha256=3mMHHOpM2jR4fdJMMOVMEG0srqalRHGvzwf-L7diA0s,1386
99
+ forge/builtins/Splice/Ans.vy,sha256=X_3qphlzSiNqnzPlSioBcXChW6wxjKKrZfiDiyBhaXo,7167
100
+ forge/builtins/Splice/CometBft.vy,sha256=BB0doa40JxtMgto-htlQNUY5xGRLqoFNXi6sl_CJzv0,1649
101
+ forge/builtins/Splice/DecentralizedSynchronizer.vy,sha256=fcOLAKK63deAVEZCGspr_QUwW9d3IvE8rz3JXU0wcUw,1946
102
+ forge/builtins/Splice/DsoBootstrap.vy,sha256=YqyI5I34I1Dr5TqnORi2zvBmimFh0FskF0H8d1Je1Ec,1643
103
+ forge/builtins/Splice/DsoRules.vy,sha256=LXit3ESG_n_bUOYvbbePIAm0zPpYhjG8mMEayAXZ-Bg,50099
104
+ forge/builtins/Splice/Expiry.vy,sha256=OaI8MX4cnFabugGrikt3n3bautJlkptJcLj3SkYZRPU,1978
105
+ forge/builtins/Splice/ExternalPartyAmuletRules.vy,sha256=HGqDw321bmT33sgk-mkrCLSKRmeaV2E8wOHyxWSpIag,6069
106
+ forge/builtins/Splice/ExternalPartyConfigState.vy,sha256=iHAg4fCEPcwFoy2A5a9DmJapVFhHMmJDZpcFo6h9C9I,884
107
+ forge/builtins/Splice/Fees.vy,sha256=-n7HPbqGd-FL2GXCuod6ANqOD2EREM26hniRwZClEF8,2702
108
+ forge/builtins/Splice/Issuance.vy,sha256=2Bh9DgVTE6XiXfVHrnV91NTsMtL7YADMvUvizvSDDxE,3702
109
+ forge/builtins/Splice/RelRound.vy,sha256=cCcrFqgus-35L4MtnVfDg9S0Pp41f_Lt9TN-mytGQe8,281
110
+ forge/builtins/Splice/Round.vy,sha256=EEVtyAnvtz1DGHvBhq6TwRq0AmuT_nHSyPgNorAamMw,3479
111
+ forge/builtins/Splice/Schedule.vy,sha256=Yk93bRQ3LVjncpRRf69KlD2uj-EwjzHH-THd7hdTw0A,1276
112
+ forge/builtins/Splice/Splitwell.vy,sha256=Vy6tSJlmwqK0gdfHUmwAWDrGs3CKWe00aslVbk_3ILs,7514
113
+ forge/builtins/Splice/SvOnboarding.vy,sha256=PG4eoViFVeuiobr5im_E7SdkeMF2MbZI1b9x6nwmpF0,1543
114
+ forge/builtins/Splice/Types.vy,sha256=eJc6s67OVnRoNCPVGN3n7mfG4nuNWk7_zjJv9qXraDo,316
115
+ forge/builtins/Splice/Util.vy,sha256=dlLOJQmafg4eEPdRlZEFwq61nMeCm-RW8XD8fNY1yvg,2919
116
+ forge/builtins/Splice/ValidatorLicense.vy,sha256=gwf_y25LpYLLbOfP7xmt_5fwKFCazj-Bk1Dt_rFQVlY,5050
117
+ forge/builtins/Splice/ValidatorOnboarding.vy,sha256=Id5ORWTXkP5E4aR21FnFbqxbJb00ePHEDABM1LGqDKw,1092
118
+ forge/builtins/Splice/Amulet/CryptoHash.vy,sha256=KIxpj9cECYE-_EgpYuUs328U6H8bPGWyH5m-1XuDhuE,1187
119
+ forge/builtins/Splice/Amulet/RewardAccountingV2.vy,sha256=puXzn0_i5K9lDBzGkFb1pp30JwbSCJ6eFDJqipGI1d8,1887
120
+ forge/builtins/Splice/Amulet/TokenApiUtils.vy,sha256=2RDdgLoPLLKG0AECR_tIq_Fs8mpaAmGyFxctzIvdI40,4549
121
+ forge/builtins/Splice/Amulet/TwoStepTransfer.vy,sha256=jMvNjlU3Nz3qfTdrk5AOZJ-xmEhYddz_1GZV00x0--w,1854
122
+ forge/builtins/Splice/Ans/AmuletConversionRateFeed.vy,sha256=dyUM7vwXj-7x_D0n7oNHVxBx8W2RwFBPS5jIozjZi8M,1689
123
+ forge/builtins/Splice/Api/FeaturedAppRightV1.vy,sha256=T-n5olQmzGKuUQri_rkupb0zuuPxpLoFxINivgM6QuY,1268
124
+ forge/builtins/Splice/Api/FeaturedAppRightV2.vy,sha256=sAyKQW2NMixFQrGMae_WXiYwg20Gq3AA2DXvqFn4e1g,1331
125
+ forge/builtins/Splice/Api/RewardAssignmentV1.vy,sha256=H3Fo6Mg-NMDQoV3vaqEw7szBuZH9VsjdEZRtHKJYcfQ,1501
126
+ forge/builtins/Splice/Api/Token/AllocationInstructionV1.vy,sha256=6nbYr1xrU_PXs_etCeipZzzMgMlwf0JZD4o_CoDCTUo,4592
127
+ forge/builtins/Splice/Api/Token/AllocationInstructionV2.vy,sha256=D_PjE34j1MskEsIdZguim2ozFjoi184BKuihzPEq3E4,5768
128
+ forge/builtins/Splice/Api/Token/AllocationRequestV1.vy,sha256=kBJuO9yOwMCtELtc7hDhM9ywZgxKO6MuX8Zm_-JM70E,1425
129
+ forge/builtins/Splice/Api/Token/AllocationRequestV2.vy,sha256=tqMKuFl_phx2x0ZKUufWpFN40BqAoJgvCq3VixDfyzs,3653
130
+ forge/builtins/Splice/Api/Token/AllocationV1.vy,sha256=gSrd0fFZy1X4x6H7di7BPkLS4HUw_FVey0ovoK9yinY,3440
131
+ forge/builtins/Splice/Api/Token/AllocationV2.vy,sha256=3Xt33dLZf64ChhxafULHxq7j3pFxky8QZ7rgKHQOPjU,7769
132
+ forge/builtins/Splice/Api/Token/BurnMintV1.vy,sha256=wTnBwLQaLQ0F2TCPqOppQDWf2I5Ch8BNyGUkenRw8g8,1864
133
+ forge/builtins/Splice/Api/Token/HoldingV1.vy,sha256=OxM8dXOPGa7_-kCnooaoG-oX4b9G668bKyW_sxDsx4I,690
134
+ forge/builtins/Splice/Api/Token/HoldingV2.vy,sha256=cHJz8J-RfrVgkF6-x5JMA4EA6FZVy4xD2NUoFywkVNg,781
135
+ forge/builtins/Splice/Api/Token/MetadataV1.vy,sha256=YRwWXj89akX5gL1e4tW0xXbSeU2DPR3cWApvJCbbvtw,2235
136
+ forge/builtins/Splice/Api/Token/TransferEventsV2.vy,sha256=aJ_UWzfb-gWip2UuUQAOyOpY1Nnrhtt3uF1eC4otWZk,1523
137
+ forge/builtins/Splice/Api/Token/TransferInstructionV1.vy,sha256=4z4f5m_f_NCCy8EsQLUTsRsyiqytOhPeBuUHjZBDFks,5925
138
+ forge/builtins/Splice/Api/Token/TransferInstructionV2.vy,sha256=4kt1iMWh17tHlg7EV-p9EyWeerEasc71xDXeYI7Jn5k,6379
139
+ forge/builtins/Splice/Api/Token/Test/DummyHolding.vy,sha256=A_-GOZMT_zVnypgMx1PJX029N4bVD_Hl-pWEHVka0bc,183
140
+ forge/builtins/Splice/Api/Token/Test/DummyTwoInterfaces.vy,sha256=U2v2afZ73Ceyu0bPvRv1OAY0Va1pJJ9iCEXfN7iwGJE,239
141
+ forge/builtins/Splice/AppManager/Store.vy,sha256=xDpRFgVeODV7CXWdhb3295NgvsCf3aBmCv20PEFZ83c,1253
142
+ forge/builtins/Splice/DSO/AmuletPrice.vy,sha256=odLMHku-hX2bhR3vdIQRg6Wrg61hzsKDvV8YR6FV4Zg,659
143
+ forge/builtins/Splice/DSO/DecentralizedSynchronizer.vy,sha256=G2vPATNOmmFrYtjgOvDB5Fxn3AqIWhg_iEtp7u1Ec_I,3074
144
+ forge/builtins/Splice/DSO/SvState.vy,sha256=F8kbjVmmOx2qmzlaN_X2hakWuPS7Fr6PjPygpI9eVzY,1774
145
+ forge/builtins/Splice/Testing/Apps/TradingApp.vy,sha256=r7YfSGziEG3LGntbn-Cqgn0JPj-RgghISQLYuDgrZKk,2868
146
+ forge/builtins/Splice/Testing/Apps/TradingAppV2.vy,sha256=4iTRMZd8YfqC2fs5pUEXVhSVX95o50oXiws28yfW-aE,8023
147
+ forge/builtins/Splice/Testing/Tokens/TestTokenV1.vy,sha256=7k-mgYvpYeWZvTHhgrZUsnRyf0fVwDs4TlM50NE3LsU,1425
148
+ forge/builtins/Splice/Testing/Tokens/TestTokenV2.vy,sha256=X7AvWFckJnD0FunLDOYTzt-fh-TvcS8kspkW7TMelcM,3663
149
+ forge/builtins/Splice/Testing/Tokens/TestTokenV2/AccountConfig.vy,sha256=wxpOffTFXoFIdvXWbKp6M4y0K43s9K6jYaU1XomemTg,8052
150
+ forge/builtins/Splice/Testing/Tokens/TestTokenV2/Allocation.vy,sha256=Q4g4ihONSPNAJT4xqWo_wmBelL51DQzVVJOoEcExGJU,7354
151
+ forge/builtins/Splice/Testing/Tokens/TestTokenV2/Holding.vy,sha256=3XGTSQC99HXrw0DrnzKtTS8zhBmWXDAQTPP_Mzh7us0,701
152
+ forge/builtins/Splice/Testing/Tokens/TestTokenV2/Transfer.vy,sha256=ONHhQ7Wa9QQTL3PvdVu83MHgik6NQwUkUl5exrOuPXE,3302
153
+ forge/builtins/Splice/Testing/Tokens/TestTokenV2/Util.vy,sha256=GgudqGUTsf4McGN1nZS03k-UuvnkVaJoORkN3NJvfOM,1183
154
+ forge/builtins/Splice/TokenStandard/Utils.vy,sha256=hRYtc9ARkhbfYIBof9tGDOwzl1H4aFm-f2DwXB4mzRI,3404
155
+ forge/builtins/Splice/TokenStandard/Utils/Internal/Allocations.vy,sha256=w67Ld-MF8Q5brEJ-TxjkV3Ja_lmfGWQvnv1HE0S-hgE,11563
156
+ forge/builtins/Splice/TokenStandard/Utils/Internal/Choices.vy,sha256=a7AaEtzpGbJtYtHSlmmodiam6GA40EsHDxaGy8Oh6ik,1791
157
+ forge/builtins/Splice/TokenStandard/Utils/Internal/Conversions.vy,sha256=R5xfvqvoGfS23-zCCZkrInefNgzQ_o22FHpYMblAgQ4,4468
158
+ forge/builtins/Splice/TokenStandard/Utils/Internal/Events.vy,sha256=qZN1fINNT-YekRbIeK5dTMz7_0LAe1ug1MauvkXGIOc,2952
159
+ forge/builtins/Splice/TokenStandard/Utils/Internal/Transfers.vy,sha256=qUQD5SCbcxH8kZVvQ0usTjOqOFf4jYlkU1xl294QKW4,2688
160
+ forge/builtins/Splice/Util/FeaturedApp/BatchedMarkersProxy.vy,sha256=xpj4gQ3asaPD6xxMvtZPC4FRyPGdJK08lcrHJaHbFwo,1741
161
+ forge/builtins/Splice/Util/FeaturedApp/DelegateProxy.vy,sha256=hzwc5vuOavd9cNhC-9ZWb_4EMRDfEFzmm9pX4THEMPE,3404
162
+ forge/builtins/Splice/Util/FeaturedApp/WalletUserProxy.vy,sha256=QdFTdi4PFlt-DvpyiKLMEkd51wN8SqEmWfktyYxN958,6052
163
+ forge/builtins/Splice/Util/Token/Wallet/BatchingUtilityV2.vy,sha256=Ry0DZQ-t0PIXq8CPMA1wmSPpBE6bKpVWq3J896FO_PA,12005
164
+ forge/builtins/Splice/Util/Token/Wallet/MergeDelegation.vy,sha256=pHlw3S-cSVLIwEInSkuENgaiQt6Xxhc2MOD93QlYV10,4419
165
+ forge/builtins/Splice/Wallet/BuyTrafficRequest.vy,sha256=01Gfg5PdsawXNSyx7ziOFy93c2w6ZOSB4dxJ0FZXslE,2205
166
+ forge/builtins/Splice/Wallet/Install.vy,sha256=LFG6QWsCjkvqHh0KqcYSsCM0z-JIM9ULq94EAKckO-w,24758
167
+ forge/builtins/Splice/Wallet/MintingDelegation.vy,sha256=L6MNlJlVx_u7JQCN5g3HMArg8r0FhGAfAqXyo4RHDvM,3038
168
+ forge/builtins/Splice/Wallet/Payment.vy,sha256=gGezYj44z-eU0Y1HJ_LyF83wkDEg8gkLLdyd76dyfrE,4958
169
+ forge/builtins/Splice/Wallet/Subscriptions.vy,sha256=3j2iQWw0sNqmcHcx5qXoTmqbpmFNQzV8-jJ36IIOisQ,9902
170
+ forge/builtins/Splice/Wallet/TopUpState.vy,sha256=ddo3xRu3SvBESctAegB9T6T06ERnptsR-z7jjnIpdzk,680
171
+ forge/builtins/Splice/Wallet/TransferOffer.vy,sha256=h5ld9Ml4KPf-3m8WmNXKaxB_1RdQKIfSC-Fe6FcBaso,3715
172
+ forge/builtins/Splice/Wallet/TransferPreapproval.vy,sha256=gae7LEaJg81FeamtQ58vCzZVkMv5852x8y5_pfYyuqM,1111
173
+ forge/cli/__init__.py,sha256=fFGH3J9U7jbLvfxPnsSS9be-7F0b735HrZ2UgWgVBI4,624
174
+ forge/cli/forge_daml.py,sha256=ciuygdRVfTMsW6yGTtAna-21Bc2mvOv-Z7H6II9l78A,3511
175
+ forge/cli/forge_dar.py,sha256=n8acZtms1m337HzN07o9v5xwACTtFXqcY8SJY5a-Kjw,7159
176
+ forge/cli/forge_json.py,sha256=7bV72X0mZzXHCm_BU-LF939TfyohwLUpNmDIkUD0GY8,913
177
+ forge/cli/main.py,sha256=-WVn68fzn50pzbq4V1qgR3urgj0EBa1claFlWG8uEd0,6426
178
+ forge/codegen/__init__.py,sha256=1hTffC8wznZIO-kjll_5eySbZN0Qp0ab2780vWt73PU,760
179
+ forge/codegen/doc.py,sha256=LHbOrkhXmJ9wj1pUmNh-Jd56Qd0YL3hkR1dNZIE0qgk,1797
180
+ forge/codegen/emit.py,sha256=Dzd6fFLrt_-yFaMS8oYp9oInf6JNg4UuX6ahR3tsR1s,56008
181
+ forge/codegen/loops.py,sha256=_NdN43trkNFfkPOeOW0XAEpZz_NR3ba4spJQ3tE-PHg,981
182
+ forge/codegen/maps.py,sha256=x7EAYgcE6d_lfysxYw2aLDo-5l8B6FYdWSZNJXQ0uh8,2679
183
+ forge/codegen/optional.py,sha256=C8DcKBbF-W78L_odcyoOrHy0rpS_snqueHMDTATxdi0,1646
184
+ forge/codegen/self_mutation.py,sha256=-n21lTX-7JNisLcKWowzYEd9RMJv_-BC1_83Cd4R0ao,15272
185
+ forge/codegen/sets.py,sha256=guD7xBWDWQU00R7H16Jeib_nP34E098h71XfqYQgwS8,1656
186
+ forge/codegen/source_map.py,sha256=E4LSEey0lvkwJHqugAu_N8t25g_nU4vmiED5ubEdc7k,9136
187
+ forge/compiler/__init__.py,sha256=fFGH3J9U7jbLvfxPnsSS9be-7F0b735HrZ2UgWgVBI4,624
188
+ forge/compiler/settings.py,sha256=ofIAqz4YHMyhEa_wqu6VH6osMEcyMA0DYWzcOMNGOJU,2819
189
+ forge/ir/__init__.py,sha256=lBqsY6s6qxZTxakWSTB2MQeVd6H6E32ZCpP33Ep_eyw,693
190
+ forge/ir/fields.py,sha256=tpkoHEzdPLTKQ8E4PhDKCDFSDnJfeob-yten-J3rTBw,3130
191
+ forge/ir/imports.py,sha256=82uQ6qKWEGocYIx0S2HJjxLTOJvCFCD7bZQA0_AWxK8,8623
192
+ forge/ir/lower.py,sha256=U7JgCzZIJBD2kR9OCf052caKzG4SsZ8Tmg94faKbrV4,32215
193
+ forge/ir/nodes.py,sha256=xcL1RgD1ibsbEw_hNLRLZuaKl0NSjIqAuH6FZGzBPRg,9067
194
+ forge/ir/normalize.py,sha256=Tj8surnd97cPD9IW-jn7XEMCJrFXF8Gf44PW_dqsZeQ,34658
195
+ forge/models/__init__.py,sha256=DOuQqOPMF96bkVJagLjF_CxWDVHOvJD_IgDGZpF6wng,1268
196
+ forge/models/decorators.py,sha256=ST4c6H-llrKExC6OlJt9NMF-QR0F8wCbQkqNy9m7cK0,1218
197
+ forge/models/error_codes.py,sha256=uTzUgb7UANAhwbn8FhYzqo0nglhJZVImzulz0sv4qbE,1427
198
+ forge/models/types.py,sha256=agINNJ3YtTPtGO_oxP8CUvgAMnniQN_azJsAnhhEHTU,934
199
+ forge/semantics/__init__.py,sha256=3zE74pc369IXQnILpCATRXi4Ec-BbJT19hTXv4Hxf8s,1482
200
+ forge/semantics/primitive_specs.py,sha256=cmmqispjgDxIMx0NgqMrRZSDHC31XTid5dm5-0RaCas,8991
201
+ forge/semantics/analysis/__init__.py,sha256=fFGH3J9U7jbLvfxPnsSS9be-7F0b735HrZ2UgWgVBI4,624
202
+ forge/semantics/analysis/imports.py,sha256=AUWVYr-NYjpquXDJ8MV8gguV-hxXGejx-diNa1-2CNs,17337
203
+ forge/semantics/analysis/intrinsics.py,sha256=fglW5zDNQEzXOJW0bK-n_JOUxR21aRNPYilqoNyugVE,19832
204
+ forge/semantics/analysis/module.py,sha256=t-1DCmj33NfozEtujhrJXmPtNaUgiU58gcuUP7ONKVE,14823
205
+ forge/semantics/analysis/primitive_values.py,sha256=cgbsRggnDGHpKyd4Mojm9glMxsTYG-P7YH21ixetchU,13036
206
+ forge/semantics/analysis/structure.py,sha256=zYK_PXrA8MWBSveBYr-UKz5I23P6PsPaQxxPd2k8WcI,29622
207
+ forge/semantics/analysis/typecheck.py,sha256=f_GQxPwtzvEoeGCNlDsg7N4M9lEJ3xvEnVbbRdz07o8,41039
208
+ forge/semantics/analysis/types.py,sha256=hAv7SpHTlikHT2vPW1nFNyre3Lh3fkX4zYiY2-RJyrU,47277
209
+ forge/stubgen/__init__.py,sha256=eUU7H-CNupiD_ixMuZY9yWSJ2Jk5vgEv20X4Ze7XLLc,3303
210
+ forge/stubgen/dar.py,sha256=60quoigdwPIzqd-tJKsIn6jE_bIhJWoH4UtJUDe42aE,2924
211
+ forge/stubgen/exports.py,sha256=XwrjcxOJO4FUdLqY6QqFLTgQbPqMJi2hd8nGXmdM2EI,1653
212
+ forge/stubgen/lf2.py,sha256=VR6g76GdktRjcLIZKrj2IsqZxrDa3kSXJdpwTx0rWEQ,3382
213
+ forge/stubgen/parties.py,sha256=G5CHU6ZZaTgZYQPJBYTiX0Pc8Vw-4ItIugE27Anxy28,4477
214
+ forge/stubgen/render.py,sha256=hYknZtw-ugPN47EjlSqOV9MeI3UqQwyEW6w46FAJKW0,23553
215
+ damlforge-0.0.13.dist-info/METADATA,sha256=faacpX-EIbApBPcTHcbv5xCs0uoeRm0R1KtOHph99rM,12680
216
+ damlforge-0.0.13.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
217
+ damlforge-0.0.13.dist-info/entry_points.txt,sha256=YI2pl_NJh08DDhZl3Z-urH5nJO_aFWVJ2jheDGzdRcs,45
218
+ damlforge-0.0.13.dist-info/top_level.txt,sha256=sDbe4KjRUBYyB4IABQOjHzoomNKH_4KwOv5fPPrv4ME,6
219
+ damlforge-0.0.13.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.2.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ forge = forge.cli.main:cli