diff --git a/compat/main.py b/compat/main.py
index 1da0c95d21..9a973e9a80 100644
--- a/compat/main.py
+++ b/compat/main.py
@@ -1,43 +1,22 @@
from __future__ import annotations
-import dataclasses
-import html
-import json
import logging
import os
-import re
import shlex
import shutil
+import stat
import subprocess
-import sys
-import textwrap
-from collections import defaultdict
from contextlib import contextmanager
from dataclasses import dataclass, field
-from enum import Enum, unique
from pathlib import Path
-from typing import List, Optional, Collection, Dict, IO, Any
-from typing_extensions import Protocol, Literal
+from typing import List, Optional, Collection, Dict
import click as click
import coloredlogs
-import tabulate
import yaml
-from click.utils import LazyFile
from dacite import from_dict
SUITE_PATH = Path("suite").resolve()
-CMD_PATH = Path("../runtime/cmd").resolve()
-PARSER_PATH = Path("parse").resolve()
-CHECKER_PATH = Path("check").resolve()
-
-ansi_escape_pattern = re.compile(r'\x1b[^m]*m')
-
-
-class Openable(Protocol):
- def open(self) -> IO:
- pass
-
@contextmanager
def cwd(path):
@@ -48,91 +27,34 @@ def cwd(path):
finally:
os.chdir(oldpwd)
-
-@dataclass
-class File:
- path: str
- prepare: Optional[str]
- member_account_access: List[str] = field(default_factory=list)
-
- def rewrite(self, path: Path):
- if not isinstance(self.prepare, str):
- return
-
- logger.info(f"Preparing {path}")
-
- source: str
- with path.open(mode="r") as f:
- source = f.read()
-
- def replace(pattern, replacement):
- nonlocal source
- source = re.sub(pattern, replacement, source)
-
- variables = {"replace": replace}
- with cwd(str(path.parent.absolute())):
- exec(self.prepare, variables)
-
- with path.open(mode="w") as f:
- f.write(source)
-
- @classmethod
- def parse(cls, path: Path, use_json: bool, bench: bool) -> (bool, Optional):
- return cls._run(PARSER_PATH, "Parsing", path, use_json, bench)
-
- def check(self, path: Path, use_json: bool, bench: bool) -> (bool, Optional):
- extra_args = [
- f"-memberAccountAccess=S.{path}:S.{(path.parent / Path(other_path)).resolve()}"
- for other_path in self.member_account_access
- ]
- return self._run(CHECKER_PATH, "Checking", path, use_json, bench, extra_args)
-
- @staticmethod
- def _run(
- tool_path: Path,
- verb: str,
- path: Path,
- use_json: bool,
- bench: bool,
- extra_args: List[str] = None
- ) -> (bool, Optional):
- logger.info(f"{verb} {path}")
- json_args = ["-json"] if use_json else []
- bench_args = ["-bench"] if bench else []
- args = json_args + bench_args + (extra_args or [])
-
- completed_process = subprocess.run(
- [tool_path, *args, path],
- cwd=str(path.parent),
- capture_output=use_json
- )
- result = None
- if use_json:
- result = json.loads(completed_process.stdout)
-
- if completed_process.returncode != 0:
- logger.error(f"{verb} failed: {path}")
- return False, result
-
- return True, result
-
-
@dataclass
class GoTest:
path: str
command: str
- def run(self, working_dir: Path, prepare: bool, go_test_ref: Optional[str]) -> bool:
- if go_test_ref:
- replacement = f'github.com/onflow/cadence@{go_test_ref}'
+ def run(self, working_dir: Path, prepare: bool, cadence_version: Optional[str], flowgo_version: Optional[str]) -> bool:
+ if cadence_version:
+ cadence_replacement = f'github.com/onflow/cadence@{cadence_version}'
else:
- replacement = shlex.quote(str(Path.cwd().parent.absolute()))
+ # default: point to local cadence repo
+ cadence_replacement = shlex.quote(Path.cwd().parent.absolute().resolve().as_posix())
+
+ if flowgo_version:
+ flowgo_replacement = f'github.com/onflow/flow-go@{flowgo_version}'
+ else:
+ # default: use the newest version of flow-go available
+ flowgo_replacement = f'github.com/onflow/flow-go@latest'
with cwd(working_dir / self.path):
if prepare:
+ logger.info("Editing dependencies")
+ subprocess.run([
+ "go", "get", flowgo_replacement,
+ ])
subprocess.run([
- "go", "mod", "edit", "-replace", f'github.com/onflow/cadence={replacement}',
+ "go", "mod", "edit", "-replace", f'github.com/onflow/cadence={cadence_replacement}',
])
+ logger.info("Downloading dependencies")
subprocess.run([
"go", "get", "-t", ".",
])
@@ -140,40 +62,6 @@ def run(self, working_dir: Path, prepare: bool, go_test_ref: Optional[str]) -> b
result = subprocess.run(shlex.split(self.command))
return result.returncode == 0
-
-@dataclass
-class BenchmarkResult:
- iterations: int
- time: int
-
-
-@dataclass
-class ParseResult:
- error: Optional[Any] = field(default=None)
- bench: Optional[BenchmarkResult] = field(default=None)
-
- @classmethod
- def from_dict(cls, data: Dict):
- return from_dict(data_class=cls, data=data)
-
-
-@dataclass
-class CheckResult:
- error: Optional[Any] = field(default=None)
- bench: Optional[BenchmarkResult] = field(default=None)
-
- @classmethod
- def from_dict(cls, data: Dict):
- return from_dict(data_class=cls, data=data)
-
-
-@dataclass
-class Result:
- path: str
- parse_result: ParseResult
- check_result: Optional[CheckResult] = field(default=None)
-
-
def load_index(path: Path) -> List[str]:
logger.info(f"Loading suite index from {path} ...")
with path.open(mode="r") as f:
@@ -184,7 +72,6 @@ class Description:
description: str
url: str
branch: str
- files: List[File] = field(default_factory=list)
go_tests: List[GoTest] = field(default_factory=list)
@staticmethod
@@ -200,6 +87,11 @@ def from_dict(cls, data: Dict):
def _clone(self, working_dir: Path):
if working_dir.exists():
+ for root, dirs, files in os.walk(working_dir):
+ for dir in dirs:
+ os.chmod(os.path.join(root, dir), stat.S_IRUSR | stat.S_IWUSR)
+ for file in files:
+ os.chmod(os.path.join(root, file), stat.S_IRUSR | stat.S_IWUSR)
shutil.rmtree(working_dir)
logger.info(f"Cloning {self.url} ({self.branch})")
@@ -210,69 +102,25 @@ def run(
self,
name: str,
prepare: bool,
- use_json: bool,
- bench: bool,
- check: bool,
go_test: bool,
- go_test_ref: Optional[str],
- ) -> (bool, List[Result]):
+ cadence_version: Optional[str],
+ flowgo_version: Optional[str],
+ ) -> (bool):
working_dir = SUITE_PATH / name
if prepare:
self._clone(working_dir)
- results: List[Result] = []
- check_succeeded = True
- if check:
- check_succeeded, results = self.check(working_dir, prepare=prepare, use_json=use_json, bench=bench)
-
go_tests_succeeded = True
if go_test:
for test in self.go_tests:
- if not test.run(working_dir, prepare=prepare, go_test_ref=go_test_ref):
+ if not test.run(working_dir, prepare=prepare, cadence_version=cadence_version, flowgo_version=flowgo_version):
go_tests_succeeded = False
- succeeded = check_succeeded and go_tests_succeeded
-
- return succeeded, results
-
- def check(self, working_dir: Path, prepare: bool, use_json: bool, bench: bool) -> (bool, List[Result]):
-
- run_succeeded = True
-
- results: List[Result] = []
-
- for file in self.files:
- path = working_dir.joinpath(file.path)
-
- if prepare:
- file.rewrite(path)
-
- parse_succeeded, parse_results = \
- File.parse(path, use_json=use_json, bench=bench)
- result = Result(
- path=str(path),
- parse_result=ParseResult.from_dict(parse_results[0]) if parse_results else None
- )
- if not parse_succeeded:
- run_succeeded = False
- if use_json:
- results.append(result)
- continue
-
- check_succeeded, check_results = \
- file.check(path, use_json=use_json, bench=bench)
- if check_results:
- result.check_result = CheckResult.from_dict(check_results[0])
- if use_json:
- results.append(result)
- if not check_succeeded:
- run_succeeded = False
- continue
-
- return run_succeeded, results
+ succeeded = go_tests_succeeded
+ return succeeded
class Git:
@@ -300,371 +148,6 @@ def checkout(ref: str):
raise Exception(f'failed to checkout ref {ref}')
-def build(name):
- logger.info(f"Building {name}")
- subprocess.run(["go", "build", CMD_PATH / name])
-
-
-class EnhancedJSONEncoder(json.JSONEncoder):
- def default(self, o):
- if dataclasses.is_dataclass(o):
- return dataclasses.asdict(o)
- if isinstance(o, Enum):
- return o.value
- return super().default(o)
-
-
-def indent(text: str) -> str:
- return textwrap.indent(text, " ")
-
-
-def format_markdown_details(details: str) -> str:
- stripped = ansi_escape_pattern.sub('', details)
- escaped = html.escape(stripped).replace("\n", "
")
- return f"Details
{escaped}
"
-
-
-@dataclass
-class Comparisons:
- parse_error_comparisons: Dict[str, ErrorComparison]
- parse_bench_comparisons: Optional[Dict[str, BenchComparison]]
- check_error_comparisons: Dict[str, ErrorComparison]
- check_bench_comparisons: Optional[Dict[str, BenchComparison]]
-
- @classmethod
- def from_results(cls,
- other_results: List[Result],
- current_results: List[Result],
- bench: bool,
- delta_threshold: float
- ) -> Comparisons:
-
- parse_error_comparisons: Dict[str, ErrorComparison] = {}
- check_error_comparisons: Dict[str, ErrorComparison] = {}
-
- parse_bench_comparisons: Optional[Dict[str, BenchComparison]] = None
- check_bench_comparisons: Optional[Dict[str, BenchComparison]] = None
- if bench:
- parse_bench_comparisons: Dict[str, BenchComparison] = {}
- check_bench_comparisons: Dict[str, BenchComparison] = {}
-
- other_results.sort(key=lambda result: result.path)
- current_results.sort(key=lambda result: result.path)
-
- for other_result, current_result in zip(other_results, current_results):
- path = other_result.path
- assert current_result.path == path
-
- parse_error_comparisons[path] = ErrorComparison(
- other_result.parse_result.error,
- current_result.parse_result.error
- )
- check_error_comparisons[path] = ErrorComparison(
- other_result.check_result.error,
- current_result.check_result.error
- )
-
- if bench:
- if other_result.parse_result.bench and current_result.parse_result.bench:
- parse_bench_comparisons[path] = BenchComparison(
- other_result.parse_result.bench,
- current_result.parse_result.bench,
- delta_threshold=delta_threshold
- )
-
- if other_result.check_result.bench and current_result.check_result.bench:
- check_bench_comparisons[path] = BenchComparison(
- other_result.check_result.bench,
- current_result.check_result.bench,
- delta_threshold=delta_threshold
- )
-
- return Comparisons(
- parse_error_comparisons,
- parse_bench_comparisons,
- check_error_comparisons,
- check_bench_comparisons
- )
-
- def write(self, output: IO, format: Format):
-
- result: Optional[str] = None
- if format in ("pretty", "markdown"):
-
- output.write("\n## Parser Errors\n\n")
- self._write_error_comparisons(self.parse_error_comparisons, output, format)
- if self.parse_bench_comparisons:
- output.write("\n## Parser Benchmarks\n\n")
- self._write_bench_comparisons(self.parse_bench_comparisons, output, format)
-
- output.write("\n## Checker Errors\n\n")
- self._write_error_comparisons(self.check_error_comparisons, output, format)
- if self.check_bench_comparisons:
- output.write("\n## Checker Benchmarks\n\n")
- self._write_bench_comparisons(self.check_bench_comparisons, output, format)
-
- if format == "json":
- result = json_serialize(self)
-
- if result:
- output.write(result)
-
- @staticmethod
- def _write_error_comparisons(comparisons: Dict[str, ErrorComparison], output: IO, format: Format):
-
- def write_table(data, headers):
- output.write(tabulate.tabulate(data, headers, tablefmt="pipe"))
- output.write("\n\n")
-
- groups = defaultdict(list)
-
- for path, comparison in comparisons.items():
- relative_path = Path(path).relative_to(SUITE_PATH)
- groups[comparison.category].append((relative_path, comparison))
-
- for category in (
- ErrorCategory.REGRESSION,
- ErrorCategory.STILL_FAIL,
- ErrorCategory.CHANGE,
- ErrorCategory.IMPROVEMENT,
- ErrorCategory.STILL_SUCCESS,
- ):
-
- category_comparisons = groups.get(category, [])
-
- if not len(category_comparisons):
- continue
-
- if format == "pretty":
-
- if category == ErrorCategory.REGRESSION:
- output.write("😠Regressions\n")
- output.write("-------------\n")
-
- for path, comparison in category_comparisons:
- output.write(f"- {path}:\n")
- output.write(indent(comparison.current))
- output.write("\n\n")
-
- elif category == ErrorCategory.STILL_FAIL:
- output.write("😢 Still failing\n")
- output.write("---------------\n")
-
- for path, comparison in category_comparisons:
- output.write(f"- {path}:\n")
- output.write(indent(comparison.current))
- output.write("\n\n")
-
- elif category == ErrorCategory.CHANGE:
- output.write("😕 Changed\n")
- output.write("---------\n")
-
- for path, comparison in category_comparisons:
- output.write(f"- {path}:\n")
- output.write(" Before:\n")
- output.write(indent(comparison.other))
- output.write("\n")
- output.write(" Now:\n")
- output.write(indent(comparison.current))
- output.write("\n\n")
-
- elif category == ErrorCategory.IMPROVEMENT:
- output.write("🎉 Improvements\n")
- output.write("--------------\n")
-
- for path, comparison in category_comparisons:
- output.write(f"- {path}\n")
-
- elif category == ErrorCategory.STILL_SUCCESS:
- output.write("🙂 Still succeeding\n")
- output.write("------------------\n")
-
- for path, comparison in category_comparisons:
- output.write(f"- {path}\n")
-
- output.write("\n")
-
- elif format == "markdown":
-
- if category == ErrorCategory.REGRESSION:
- data = []
- headers = ["😠Regressions", "Details"]
- for path, comparison in category_comparisons:
- data.append([path, format_markdown_details(comparison.current)])
-
- write_table(data, headers)
-
- elif category == ErrorCategory.STILL_FAIL:
- data = []
- headers = ["😢 Still failing", "Details"]
- for path, comparison in category_comparisons:
- data.append([path, format_markdown_details(comparison.current)])
-
- write_table(data, headers)
-
- elif category == ErrorCategory.CHANGE:
- data = []
- headers = ["😕 Changed", "Before", "Now"]
- for path, comparison in category_comparisons:
- data.append([
- path,
- format_markdown_details(comparison.other),
- format_markdown_details(comparison.current)
- ])
-
- write_table(data, headers)
-
- elif category == ErrorCategory.IMPROVEMENT:
- data = []
- headers = ["🎉 Improvements"]
- for path, comparison in category_comparisons:
- data.append([path])
-
- write_table(data, headers)
-
- elif category == ErrorCategory.STILL_SUCCESS:
- data = []
- headers = ["🙂 Still succeeding"]
- for path, comparison in category_comparisons:
- data.append([path])
-
- write_table(data, headers)
-
- @classmethod
- def _write_bench_comparisons(cls, comparisons: Dict[str, BenchComparison], output: IO, format: Format):
-
- def write_table(data, headers):
- output.write(tabulate.tabulate(data, headers, tablefmt="pipe"))
- output.write("\n\n")
-
- groups = defaultdict(list)
-
- for path, comparison in comparisons.items():
- relative_path = Path(path).relative_to(SUITE_PATH)
- groups[comparison.category].append((relative_path, comparison))
-
- for category in (
- BenchCategory.REGRESSION,
- BenchCategory.IMPROVEMENT,
- BenchCategory.SAME,
- ):
-
- category_comparisons = groups.get(category, [])
-
- if not len(category_comparisons):
- continue
-
- title = ""
- if category == BenchCategory.REGRESSION:
- title = "😠Regressions"
- elif category == BenchCategory.IMPROVEMENT:
- title = "🎉 Improvements"
- elif category == BenchCategory.SAME:
- title = "🙂 Same"
-
- data = []
- headers = [title, "OLD", "NEW", "DELTA", "RATIO"]
- for path, comparison in category_comparisons:
- data.append([
- path,
- cls._time_markdown(comparison.other.time),
- cls._time_markdown(comparison.current.time),
- cls._delta_markdown(comparison.delta),
- cls._ratio_markdown(comparison.ratio)
- ])
-
- write_table(data, headers)
-
- @staticmethod
- def _time_markdown(time: int) -> str:
- return f'{time / 1000000:.2f}'
-
- @staticmethod
- def _delta_markdown(delta: float) -> str:
- result = f'{delta:.2f}%'
- if result[0] != '-':
- result = '+' + result
- return result
-
- @staticmethod
- def _ratio_markdown(ratio: float) -> str:
- return f'**{ratio:.2f}x**'
-
-
-@unique
-class ErrorCategory(Enum):
- REGRESSION = "Regression"
- IMPROVEMENT = "Improvement"
- CHANGE = "Change"
- STILL_SUCCESS = "Still succeeding"
- STILL_FAIL = "Still failing"
-
-
-@dataclass
-class ErrorComparison:
- other: Optional[str]
- current: Optional[str]
- category: ErrorCategory = field(init=False)
-
- def __post_init__(self):
- self.category = self._category()
-
- def _category(self) -> ErrorCategory:
- if self.other != self.current:
- return ErrorCategory.CHANGE
- elif not self.other and self.current:
- return ErrorCategory.REGRESSION
- elif self.other and not self.current:
- return ErrorCategory.IMPROVEMENT
- elif self.other:
- return ErrorCategory.STILL_FAIL
- else:
- return ErrorCategory.STILL_SUCCESS
-
-
-@unique
-class BenchCategory(Enum):
- REGRESSION = "Regression"
- IMPROVEMENT = "Improvement"
- SAME = "Same"
-
-
-@dataclass
-class BenchComparison:
- other: BenchmarkResult
- current: BenchmarkResult
- delta_threshold: float
- ratio: float = field(init=False)
- delta: float = field(init=False)
- category: BenchCategory = field(init=False)
-
- def __post_init__(self):
- self.ratio = self.other.time / self.current.time
- self.delta = -(((self.current.time * 100) / self.other.time) - 100)
- self.category = self._category()
-
- def _category(self) -> BenchCategory:
- if abs(self.delta) > self.delta_threshold:
- if self.delta > 0:
- return BenchCategory.IMPROVEMENT
- if self.delta < 0:
- return BenchCategory.REGRESSION
-
- return BenchCategory.SAME
-
-
-Format = Literal["pretty", "json", "markdown"]
-
-
-def json_serialize(data) -> str:
- return json.dumps(data, indent=4, cls=EnhancedJSONEncoder)
-
-
-def build_all():
- for name in ("parse", "check"):
- build(name)
-
-
@click.command()
@click.option(
"--rerun",
@@ -672,51 +155,21 @@ def build_all():
default=False,
help="Rerun without cloning and preparing the suites"
)
-@click.option(
- "--format",
- type=click.Choice(["pretty", "json", "markdown"], case_sensitive=False),
- default="pretty",
- help="output format",
-)
-@click.option(
- "--bench/--no-bench",
- is_flag=True,
- default=False,
- help="Run benchmarks"
-)
-@click.option(
- "--check/--no-check",
- is_flag=True,
- default=True,
- help="Parse and check the suite files"
-)
@click.option(
"--go-test/--no-go-test",
is_flag=True,
- default=False,
+ default=True,
help="Run the suite Go tests"
)
@click.option(
- "--go-test-ref",
+ "--cadence-version",
default=None,
- help="Git ref of Cadence for Go tests"
+ help="version of Cadence for Go tests"
)
@click.option(
- "--output",
+ "--flowgo-version",
default=None,
- type=click.File("w"),
- help="Write output to given path. Standard output by default"
-)
-@click.option(
- "--compare-ref",
- "other_ref",
- help="Compare with another Git ref (e.g. commit or branch)"
-)
-@click.option(
- "--delta-threshold",
- default=4,
- type=float,
- help="Delta threshold to consider a benchmark result a change"
+ help="version of flow-go for Go tests"
)
@click.argument(
"names",
@@ -724,119 +177,59 @@ def build_all():
)
def main(
rerun: bool,
- format: Format,
- bench: bool,
- check: bool,
go_test: bool,
- go_test_ref: Optional[str],
- output: Optional[LazyFile],
- other_ref: Optional[str],
- delta_threshold: float,
+ cadence_version: str,
+ flowgo_version: str,
names: Collection[str]
):
- if other_ref is None and format not in ("pretty", "json"):
- raise Exception(f"unsupported format: {format}")
prepare = not rerun
- output: IO = output.open() if output else sys.stdout
-
- # Comparison of different runs is only possible when using JSON
-
- use_json_for_run = format != "pretty" or (other_ref is not None)
-
# Run for the current checkout
- current_success, current_results = run(
+ current_success = run(
prepare=prepare,
- use_json=use_json_for_run,
- bench=bench,
- check=check,
go_test=go_test,
- go_test_ref=go_test_ref,
+ cadence_version=cadence_version,
+ flowgo_version=flowgo_version,
names=names
)
- # Run for the other checkout, if any
-
- if other_ref:
- current_ref = Git.get_head_ref()
- try:
- Git.checkout(other_ref)
-
- _, other_results = run(
- # suite repositories were already cloned in the previous run
- prepare=False,
- use_json=use_json_for_run,
- bench=bench,
- check=check,
- go_test=go_test,
- names=names
- )
-
- comparisons = Comparisons.from_results(
- other_results,
- current_results,
- bench=bench,
- delta_threshold=delta_threshold,
- )
-
- comparisons.write(output, format)
-
- finally:
- Git.checkout(current_ref)
-
- else:
-
- if format == "json":
- results_json = json_serialize(current_results)
- output.write(results_json)
-
- output.close()
-
if not current_success:
exit(1)
def run(
prepare: bool,
- use_json: bool,
- bench: bool,
- check: bool,
go_test: bool,
- go_test_ref: Optional[str],
+ cadence_version: str,
+ flowgo_version: str,
names: Collection[str]
-) -> (bool, List[Result]):
-
- build_all()
+) -> (bool):
all_succeeded = True
+ logger.info(f'Chosen versions: cadence@{ cadence_version if cadence_version else "local version" }, flow-go@{flowgo_version if flowgo_version else "latest"}')
+
if not names:
names = load_index(SUITE_PATH / "index.yaml")
- all_results: List[Result] = []
-
for name in names:
description = Description.load(name)
- run_succeeded, results = description.run(
+ run_succeeded = description.run(
name,
prepare=prepare,
- use_json=use_json,
- bench=bench,
- check=check,
go_test=go_test,
- go_test_ref=go_test_ref,
+ cadence_version=cadence_version,
+ flowgo_version=flowgo_version,
)
if not run_succeeded:
all_succeeded = False
- all_results.extend(results)
-
- return all_succeeded, all_results
+ return all_succeeded
if __name__ == "__main__":
diff --git a/compat/requirements.txt b/compat/requirements.txt
index c83c2d82a8..83eccf7636 100644
--- a/compat/requirements.txt
+++ b/compat/requirements.txt
@@ -3,4 +3,3 @@ coloredlogs==14.0
dacite==1.5.1
PyYAML==5.4
typing-extensions==3.7.4.3
-tabulate==0.8.7
diff --git a/compat/suite/flow-core-contracts.yaml b/compat/suite/flow-core-contracts.yaml
index e7607d8573..2b3cdcaa10 100644
--- a/compat/suite/flow-core-contracts.yaml
+++ b/compat/suite/flow-core-contracts.yaml
@@ -7,133 +7,3 @@ branch: master
go_tests:
- path: lib/go/test
command: make test
-files:
-- path: contracts/FlowToken.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
-
-- path: contracts/FlowFees.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import FlowToken from 0xFLOWTOKENADDRESS',
- f'import FlowToken from "{Path("FlowToken.cdc").resolve()}"'
- )
-
-- path: contracts/FlowIDTableStaking.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import FlowToken from 0xFLOWTOKENADDRESS',
- f'import FlowToken from "{Path("FlowToken.cdc").resolve()}"'
- )
-
-- path: contracts/FlowStorageFees.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import FlowToken from 0xFLOWTOKENADDRESS',
- f'import FlowToken from "{Path("FlowToken.cdc").resolve()}"'
- )
-
-- path: contracts/FlowServiceAccount.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import FlowToken from 0xFLOWTOKENADDRESS',
- f'import FlowToken from "{Path("FlowToken.cdc").resolve()}"'
- )
- replace(
- 'import FlowFees from 0xFLOWFEESADDRESS',
- f'import FlowFees from "{Path("FlowFees.cdc").resolve()}"'
- )
- replace(
- 'import FlowStorageFees from 0xFLOWSTORAGEFEESADDRESS',
- f'import FlowStorageFees from "{Path("FlowStorageFees.cdc").resolve()}"'
- )
-
-- path: contracts/StakingProxy.cdc
-
-- path: contracts/LockedTokens.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FlowToken from 0xFLOWTOKENADDRESS',
- f'import FlowToken from "{Path("FlowToken.cdc").resolve()}"'
- )
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import FlowIDTableStaking from 0xFLOWIDTABLESTAKINGADDRESS',
- f'import FlowIDTableStaking from "{Path("FlowIDTableStaking.cdc").resolve()}"'
- )
- replace(
- 'import FlowStorageFees from 0xFLOWSTORAGEFEESADDRESS',
- f'import FlowStorageFees from "{Path("FlowStorageFees.cdc").resolve()}"'
- )
- replace(
- 'import StakingProxy from 0xSTAKINGPROXYADDRESS',
- f'import StakingProxy from "{Path("StakingProxy.cdc").resolve()}"'
- )
-
-- path: contracts/FlowStakingCollection.cdc
- member_account_access:
- - 'LockedTokens.cdc'
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import FlowToken from 0xFLOWTOKENADDRESS',
- f'import FlowToken from "{Path("FlowToken.cdc").resolve()}"'
- )
- replace(
- 'import FlowIDTableStaking from 0xFLOWIDTABLESTAKINGADDRESS',
- f'import FlowIDTableStaking from "{Path("FlowIDTableStaking.cdc").resolve()}"'
- )
- replace(
- 'import LockedTokens from 0xLOCKEDTOKENSADDRESS',
- f'import LockedTokens from "{Path("LockedTokens.cdc").resolve()}"'
- )
- replace(
- 'import FlowStorageFees from 0xFLOWSTORAGEFEESADDRESS',
- f'import FlowStorageFees from "{Path("FlowStorageFees.cdc").resolve()}"'
- )
diff --git a/compat/suite/flow-ft.yaml b/compat/suite/flow-ft.yaml
index 1fd621a3d5..3b872d692d 100644
--- a/compat/suite/flow-ft.yaml
+++ b/compat/suite/flow-ft.yaml
@@ -7,82 +7,3 @@ branch: master
go_tests:
- path: lib/go/test
command: make test
-files:
-- path: contracts/FungibleToken.cdc
-- path: contracts/utilityContracts/TokenForwarding.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../FungibleToken.cdc").resolve()}"'
- )
-
-- path: contracts/ExampleToken.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("FungibleToken.cdc").resolve()}"'
- )
-
-- path: transactions/transfer_tokens.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import ExampleToken from 0xTOKENADDRESS',
- f'import ExampleToken from "{Path("../contracts/ExampleToken.cdc").resolve()}"'
- )
-
-- path: transactions/setup_account.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import ExampleToken from 0xTOKENADDRESS',
- f'import ExampleToken from "{Path("../contracts/ExampleToken.cdc").resolve()}"'
- )
-
-- path: transactions/mint_tokens.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import ExampleToken from 0xTOKENADDRESS',
- f'import ExampleToken from "{Path("../contracts/ExampleToken.cdc").resolve()}"'
- )
-
-
-- path: transactions/burn_tokens.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../contracts/FungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import ExampleToken from 0xTOKENADDRESS',
- f'import ExampleToken from "{Path("../contracts/ExampleToken.cdc").resolve()}"'
- )
-
diff --git a/compat/suite/flow-nft.yaml b/compat/suite/flow-nft.yaml
index c6d93cc7bd..958f72f5bb 100644
--- a/compat/suite/flow-nft.yaml
+++ b/compat/suite/flow-nft.yaml
@@ -7,57 +7,3 @@ branch: master
go_tests:
- path: lib/go/test
command: make test
-files:
-- path: contracts/NonFungibleToken.cdc
-- path: contracts/ExampleNFT.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import NonFungibleToken from 0x02',
- f'import NonFungibleToken from "{Path("NonFungibleToken.cdc").resolve()}"'
- )
-
-
-- path: transactions/mint_nft.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import NonFungibleToken from 0xNFTADDRESS',
- f'import NonFungibleToken from "{Path("../contracts/NonFungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import ExampleNFT from 0xNFTCONTRACTADDRESS',
- f'import ExampleNFT from "{Path("../contracts/ExampleNFT.cdc").resolve()}"'
- )
-
-- path: transactions/setup_account.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import NonFungibleToken from 0xNFTADDRESS',
- f'import NonFungibleToken from "{Path("../contracts/NonFungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import ExampleNFT from 0xNFTCONTRACTADDRESS',
- f'import ExampleNFT from "{Path("../contracts/ExampleNFT.cdc").resolve()}"'
- )
-
-- path: transactions/transfer_nft.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import NonFungibleToken from 0xNFTADDRESS',
- f'import NonFungibleToken from "{Path("../contracts/NonFungibleToken.cdc").resolve()}"'
- )
- replace(
- 'import ExampleNFT from 0xNFTCONTRACTADDRESS',
- f'import ExampleNFT from "{Path("../contracts/ExampleNFT.cdc").resolve()}"'
- )
\ No newline at end of file
diff --git a/compat/suite/nba-smart-contracts.yaml b/compat/suite/nba-smart-contracts.yaml
index f56ebbfcee..8e44b443f3 100644
--- a/compat/suite/nba-smart-contracts.yaml
+++ b/compat/suite/nba-smart-contracts.yaml
@@ -7,84 +7,3 @@ branch: master
go_tests:
- path: lib/go/test
command: make test
-files:
-- path: contracts/TopShot.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import NonFungibleToken from 0xNFTADDRESS',
- f'import NonFungibleToken from "{Path("../../flow-nft/contracts/NonFungibleToken.cdc").resolve()}"'
- )
-
-- path: contracts/MarketTopShot.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
-
- replace(
- 'import NonFungibleToken from 0xNFTADDRESS',
- f'import NonFungibleToken from "{Path("../../flow-nft/contracts/NonFungibleToken.cdc").resolve()}"'
- )
-
- replace(
- 'import TopShot from 0xTOPSHOTADDRESS',
- f'import TopShot from "{Path("TopShot.cdc").resolve()}"'
- )
-
-- path: contracts/TopShotMarketV2.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import FungibleToken from 0xFUNGIBLETOKENADDRESS',
- f'import FungibleToken from "{Path("../../flow-ft/contracts/FungibleToken.cdc").resolve()}"'
- )
-
- replace(
- 'import NonFungibleToken from 0xNFTADDRESS',
- f'import NonFungibleToken from "{Path("../../flow-nft/contracts/NonFungibleToken.cdc").resolve()}"'
- )
-
- replace(
- 'import TopShot from 0xTOPSHOTADDRESS',
- f'import TopShot from "{Path("TopShot.cdc").resolve()}"'
- )
-
-- path: contracts/TopShotShardedCollection.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import NonFungibleToken from 0xNFTADDRESS',
- f'import NonFungibleToken from "{Path("../../flow-nft/contracts/NonFungibleToken.cdc").resolve()}"'
- )
-
- replace(
- 'import TopShot from 0xTOPSHOTADDRESS',
- f'import TopShot from "{Path("TopShot.cdc").resolve()}"'
- )
-
-- path: contracts/TopshotAdminReceiver.cdc
- # language=Python prefix="replace: Callable[[str, str], None]\n"
- prepare: |
- from pathlib import Path
-
- replace(
- 'import TopShotShardedCollection from 0xSHARDEDADDRESS',
- f'import TopShotShardedCollection from "{Path("TopShotShardedCollection.cdc").resolve()}"'
- )
-
- replace(
- 'import TopShot from 0xTOPSHOTADDRESS',
- f'import TopShot from "{Path("TopShot.cdc").resolve()}"'
- )
-
diff --git a/npm-packages/cadence-parser/package.json b/npm-packages/cadence-parser/package.json
index fc893be423..bce9c0aabf 100644
--- a/npm-packages/cadence-parser/package.json
+++ b/npm-packages/cadence-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@onflow/cadence-parser",
- "version": "1.0.0-preview.52",
+ "version": "1.1.0-preview.52",
"description": "The Cadence parser",
"homepage": "https://github.com/onflow/cadence",
"repository": {
diff --git a/tools/storage-explorer/addresses.go b/tools/storage-explorer/addresses.go
index 6fb06cdc47..8a291d7a75 100644
--- a/tools/storage-explorer/addresses.go
+++ b/tools/storage-explorer/addresses.go
@@ -24,7 +24,7 @@ import (
"github.com/onflow/flow-go/cmd/util/ledger/util/registers"
- "github.com/onflow/cadence/common"
+ "github.com/onflow/cadence/runtime/common"
)
func addressesJSON(registersByAccount *registers.ByAccount) ([]byte, error) {
diff --git a/tools/storage-explorer/go.mod b/tools/storage-explorer/go.mod
index e29530edb8..f706377729 100644
--- a/tools/storage-explorer/go.mod
+++ b/tools/storage-explorer/go.mod
@@ -4,7 +4,7 @@ go 1.22
require (
github.com/gorilla/mux v1.8.1
- github.com/onflow/atree v0.8.0-rc.6
+ github.com/onflow/atree v0.8.0
github.com/onflow/cadence v1.0.0-preview.52
github.com/onflow/flow-go v0.37.10
github.com/rs/zerolog v1.32.0
@@ -214,5 +214,3 @@ require (
lukechampine.com/blake3 v1.3.0 // indirect
rsc.io/tmplfunc v0.0.3 // indirect
)
-
-replace github.com/onflow/cadence => ../..
diff --git a/tools/storage-explorer/go.sum b/tools/storage-explorer/go.sum
index 54aea1efc8..728dc28555 100644
--- a/tools/storage-explorer/go.sum
+++ b/tools/storage-explorer/go.sum
@@ -970,7 +970,6 @@ github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
-github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg=
github.com/SaveTheRbtz/mph v0.1.1-0.20240117162131-4166ec7869bc h1:DCHzPQOcU/7gwDTWbFQZc5qHMPS1g0xTO56k8NXsv9M=
github.com/SaveTheRbtz/mph v0.1.1-0.20240117162131-4166ec7869bc/go.mod h1:LJM5a3zcIJ/8TmZwlUczvROEJT8ntOdhdG9jjcR1B0I=
github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0=
@@ -998,7 +997,6 @@ github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
-github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0=
@@ -1663,8 +1661,6 @@ github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbk
github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI=
github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw=
-github.com/itchyny/gojq v0.12.14/go.mod h1:y1G7oO7XkcR1LPZO59KyoCRy08T3j9vDYRV0GgYSS+s=
-github.com/itchyny/timefmt-go v0.1.5/go.mod h1:nEP7L+2YmAbT2kZ2HfSs1d8Xtw9LY8D2stDBckWakZ8=
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA=
@@ -1734,7 +1730,6 @@ github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/4
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
-github.com/kodova/html-to-markdown v1.0.1/go.mod h1:NhDrT7QdSrdpezFg/0EQx9zeobCHR5oAguzrKrC6mVU=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
@@ -1908,8 +1903,11 @@ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onflow/atree v0.6.1-0.20230711151834-86040b30171f/go.mod h1:xvP61FoOs95K7IYdIYRnNcYQGf4nbF/uuJ0tHf4DRuM=
-github.com/onflow/atree v0.8.0-rc.6 h1:GWgaylK24b5ta2Hq+TvyOF7X5tZLiLzMMn7lEt59fsA=
-github.com/onflow/atree v0.8.0-rc.6/go.mod h1:yccR+LR7xc1Jdic0mrjocbHvUD7lnVvg8/Ct1AA5zBo=
+github.com/onflow/atree v0.8.0 h1:qg5c6J1gVDNObughpEeWm8oxqhPGdEyGrda121GM4u0=
+github.com/onflow/atree v0.8.0/go.mod h1:yccR+LR7xc1Jdic0mrjocbHvUD7lnVvg8/Ct1AA5zBo=
+github.com/onflow/cadence v1.0.0-M3/go.mod h1:odXGZZ/wGNA5mwT8bC9v8u8EXACHllB2ABSZK65TGL8=
+github.com/onflow/cadence v1.0.0-preview.52 h1:hZ92e6lL2+PQa3C1i5jJh0zZYFdW89+X1MS0Bkd6Ayo=
+github.com/onflow/cadence v1.0.0-preview.52/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU=
github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI=
github.com/onflow/crypto v0.25.2 h1:GjHunqVt+vPcdqhxxhAXiMIF3YiLX7gTuTR5O+VG2ns=
github.com/onflow/crypto v0.25.2/go.mod h1:fY7eLqUdMKV8EGOw301unP8h7PvLVy8/6gVR++/g0BY=
@@ -2372,7 +2370,6 @@ golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -2392,7 +2389,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
diff --git a/tools/storage-explorer/main.go b/tools/storage-explorer/main.go
index 62f55539ae..fe4f80504f 100644
--- a/tools/storage-explorer/main.go
+++ b/tools/storage-explorer/main.go
@@ -35,10 +35,11 @@ import (
"github.com/onflow/flow-go/model/flow"
"github.com/rs/zerolog"
- "github.com/onflow/cadence/common"
+ "github.com/onflow/cadence/runtime/interpreter"
+
jsoncdc "github.com/onflow/cadence/encoding/json"
- "github.com/onflow/cadence/interpreter"
"github.com/onflow/cadence/runtime"
+ "github.com/onflow/cadence/runtime/common"
)
func main() {
diff --git a/tools/storage-explorer/storagemaps.go b/tools/storage-explorer/storagemaps.go
index e173291865..ba0ca4ed91 100644
--- a/tools/storage-explorer/storagemaps.go
+++ b/tools/storage-explorer/storagemaps.go
@@ -24,10 +24,10 @@ import (
"github.com/onflow/atree"
- "github.com/onflow/cadence/common"
- "github.com/onflow/cadence/interpreter"
"github.com/onflow/cadence/runtime"
- "github.com/onflow/cadence/stdlib"
+ "github.com/onflow/cadence/runtime/common"
+ "github.com/onflow/cadence/runtime/interpreter"
+ "github.com/onflow/cadence/runtime/stdlib"
)
type KnownStorageMap struct {
diff --git a/tools/storage-explorer/type.go b/tools/storage-explorer/type.go
index 7d1b413078..24a7a93416 100644
--- a/tools/storage-explorer/type.go
+++ b/tools/storage-explorer/type.go
@@ -21,9 +21,9 @@ package main
import (
"github.com/onflow/cadence"
jsoncdc "github.com/onflow/cadence/encoding/json"
- "github.com/onflow/cadence/interpreter"
"github.com/onflow/cadence/runtime"
- "github.com/onflow/cadence/sema"
+ "github.com/onflow/cadence/runtime/interpreter"
+ "github.com/onflow/cadence/runtime/sema"
)
func prepareType(value interpreter.Value, inter *interpreter.Interpreter) (result any, description string) {
diff --git a/tools/storage-explorer/value.go b/tools/storage-explorer/value.go
index a7545ae5d3..9355456417 100644
--- a/tools/storage-explorer/value.go
+++ b/tools/storage-explorer/value.go
@@ -23,9 +23,9 @@ import (
"sort"
jsoncdc "github.com/onflow/cadence/encoding/json"
- "github.com/onflow/cadence/interpreter"
"github.com/onflow/cadence/runtime"
- "github.com/onflow/cadence/sema"
+ "github.com/onflow/cadence/runtime/interpreter"
+ "github.com/onflow/cadence/runtime/sema"
)
type Value interface {
diff --git a/version.go b/version.go
index ec1468a4d3..27ab641f5d 100644
--- a/version.go
+++ b/version.go
@@ -21,4 +21,4 @@
package cadence
-const Version = "v1.0.0"
+const Version = "v1.1.0"