Releases: ApeWorX/ape
Ape 0.8.5
Changes
- fix: issues showing lines for plugin config validation errors @antazoey (#2157)
- fix: pin peer dependency numpy<2 @antazoey (#2155)
- fix: better error when missing base-ecosystem plugin for custom networks @antazoey (#2156)
- test: run functional and integration tests separately in CI/CD @antazoey (#2147)
- fix: issue where could not define custom networks in any non-local project @antazoey (#2153)
- chore: use official install-geth-tools @antazoey (#2152)
- fix: issue with list-errors and mismatched config types @antazoey (#2151)
- fix: issue where plugin config loading error was not shown @antazoey (#2150)
- test: re-enable
macos-latest
in CI @dtdang (#2120) - feat: allow comparing currency values to currency strings @antazoey (#2149)
- docs: document environment variable support in
ape-config.yaml
files @antazoey (#2148) - feat: allow forking custom networks automatically @antazoey (#2145)
- docs: document more fully the contract-creation metadata feature @antazoey (#2146)
- fix: allow random RPCs to work for custom networks @antazoey (#2144)
- fix: issue where Ape tries starting geth-dev for custom networks w/o URIs @antazoey (#2140)
- feat: create
config.isolate_data_folder()
method @antazoey (#2139)
Ape 0.8.4
Changes
- feat: show config error linenos @antazoey (#2134)
- chore: upgrade pandas @antazoey (#2136)
- chore: fix some comments @fivecut (#2135)
- test: fix flakey tests @antazoey (#2137)
- fix: better error handling for bad dependencies: config @antazoey (#2132)
- fix: avoid duplicate caching with v versus non-v prefix in dependency versions @antazoey (#2131)
- feat: better CLI message when compiling a dependency produces no contracts @antazoey (#2130)
- fix: specify encoding always when writing text to a file @antazoey (#2129)
- fix: issue using default call-tree approach when call fails @antazoey (#2128)
- fix: issue where deleted contracts remained in
ContractManager
@antazoey (#2127) - feat: allow deploying contract types from account @antazoey (#2126)
- fix:
project.unpack()
to include full contracts directory @antazoey (#2123) - fix: block validation issues @antazoey (#2125)
- fix: eip-712 hex data display @banteg (#2122)
- fix: handle enum types more in trace enrichment @antazoey (#2121)
Ape 0.8.3
Changes
- fix: issue with
--force
flag onape pm
commands @antazoey (#2119) - fix: issues with remapping and dependency detection in foundry projects @antazoey (#2117)
- docs: solidity mapping @dtdang (#2116)
- fix: issues with manifest-dependencies, evm-version in foundry projects, and unpacking @antazoey (#2114)
- feat: foundry project config reading @antazoey (#2113)
- fix: issue where
v-prefix
was required if using ref as a version in GH dependencies @antazoey (#2112) - fix: issue where
v
prefix mattered in dependency mapping @antazoey (#2111) - docs: update userguides and notes [APE-1752] @dtdang (#2109)
- test: fix issue in test debug code @antazoey (#2110)
- fix: allow regex globs for compile exclusions @antazoey (#2108)
- docs: update receipt for 0.8 changes [APE-1752] @dtdang (#2107)
- fix: issue where trusted plugins showed up as 3rd party @antazoey (#2106)
Ape 0.8.2
Ape 0.8.1
Changes
- feat: add Holešky to EthereumConfig @xrchz (#2100)
- fix: fixed an extra parenthesis in pk export @theodorecurtil (#2101)
- fix: issue where non-core plugins showed up in core plugins @antazoey (#2103)
- feat: core plugin methoddocs [APE-1750] @dtdang (#2102)
Special thanks to: @antazoey, @dtdang, @theodorecurtil and @xrchz
Ape 0.8.0
Changes
BREAKING CHANGES
Project Refactor
These are changes directly related to the massive project refactor.
Please delete your .build/
folders and your .ape/packages
folder for a cleaner 0.8 migration.
-
refactor!: The default base path for compiling projects is now the project root instead of the contracts folder.
Source IDs now include thecontracts/
prefix everywhere.
Import remappings no longer need/contracts
in the key.
This aligns more with how other frameworks work and how import statements are expected to be. -
refactor!: Import remappings are no longer needed (most of the time!).
Now, it will generate them by default using items from the dependencies.
The source ID change (above) afforded this. -
refactor!: Projects are no longer contextual.
You can create as manyape.Project
objects as you like and use them anywhere. -
refactor!: Dependency system changes.
Now,Dependency
objects are separate from projects and have utilities for managing their installs.
Doproject.dependencies["MyDep"]["1.0.0"].project
to access the project of a local dependency.
Dependency source files are cached differently and allow for better management across your file system. -
refactor!: Config is per-project now.
In order to support having many projects in the root context at once, each project needs to have its own config.
Config also serializes and deserializes from and to.yaml
and is a Pydantic model. -
refactor!: The
.cache
folder inape-solidity
is no longer generated in your projects.
ape-solidity
compiles in a sandbox now instead.
You can delete any lingering.cache
folders on your file system.
As a side-effect, configuring the location of the.cache
folder was removed, and any issues where dependencies were improperly modified in a.cache
folder are resolved. -
refactor!:
ManagerAccessMixin.project_manager
was renamed toManagerAccessMixin.local_project
to reflect that it is no longer a singleton, and it only refers to the project at the current-working directory. -
refactor!:
ape-pm
now defines the non-default dependency and project API implementations, such asGithubDependency
. -
refactor!:
LocalProject
(a subclass ofProjectManager
for projects on the local file-system) now delegates to sub-managers for various tasks, such as.contracts
as a dict-likeContractManager
,.sources
as a dict-likeSourceManager
,.deployments
, etc, simulating objects from theethpm_types.PackageManifest
with higher up functionalities related to local file-system projects.
ProjectManager
is a base class containing factory-like behavior for creatingProjectManager
subclasses, such asLocalProject
orProject
.
Project
is a base that only needs aPackageManifest
to work (thinkape.Project.from_manifest()
).
LocalProject
contains various features for local-projects but for the most part is interoperable with its baseProject
, as the manifest is the root of all the functionality. -
refactor!: CompilerAPI now accepts iterators of source paths and yield contract types.
-
refactor!:
ape pm remove
is nowape pm uninstall
to mirrorape pm install
.
Other
-
refactor!: The Trace API is more defined at the API level (
ape.api.trace
).
ape.types.TraceFrame
andape.types.CallTreeNode
have been removed.
ape-ethereum
only serializes using types fromevm-trace
now.
Enrichments happens at lower-level dict-data and more under-the-hood for performance reasons.
The trace API defines behavior of traces at a very abstract level.
ape-ethereum
implements all rich functionality Ape is known for with its traces.
It is easier to pass along extra arguments toget_transaction_trace
such asdebug_
kwargs for customizing trace behavior more.
This is the first step to better traces. (#1864) (#2090) (#2093) -
refactor!
ape-geth
has been renamed toape-node
(#1982) -
refactor!: Goerli and mumbai networks have been removed (#1993) (#2085).
-
refactor!:
network.config
is now the network's config and not its ecosystem's. (#1981). -
refactor!: Python 3.8 is no longer supported (011ca9d)
-
refactor!: The Github client is now internal and no longer a public API exposed in Ape.
Also, it uses the requests library directly instead of a package to interact with GitHub. (6670ed7) -
feat!: New abstract property in
TestProviderAPI
for.auto_mine
!
It comes also with a setter.
Note: this was already implemented everywhere, but now it is official for plugins to recognize. -
refactor!:
AccountContainerAPI
now requires aname=
instead of adata_folder=
; it uses thedata_folder
set in the config plus its name and.data_folder
is now read-only.
This is simplifies the API with little effect, as tests often change the root data folder anyway. -
feat!: Contract creation metadata, changes how a contract's defining receipt is laid out in Ape.
No longer it is just a receipt, now it is full object with other creation-related properties that be necessary, such as its factory.
Ape now has additional ways of checking for this creation data, depending on your node,
and problematic ways have been removed.
Thank you @banteg (#2001). -
feat!: The minimum pytest requirement has bumped to the 8.0 range
-
refactor!: ape.modules is no longer a thing.
-
refactor!: SourceTraceback now requires a ContractSource instead of a ContractType during init.
OTHER CHANGES
-
feat: You can now create project objects from package manifest using
ape.Project.from_manifest()
(#1960). -
fix: When ape-vyper or ape-solidity are not installed and you try to compile
.vy
or.sol
, you will be asked to install (#1960) -
fix: Excluded sources are no longer part of
sources.paths
as new exclusions come in (#1960) -
feat: The home directory is hidden wherever paths are used, including also in
ape console
to preserver more anonymity (#1931). -
refactor:
ape pm
command improvements, such as the formatting of thelist
outputs (#1960). -
chore: fix typos @simlecode (#2094)
-
fix: plugin warning message didn't show unimplemented methods @antazoey (#2091)
-
fix: bug where compilers output selection wasn't updating when sources changes compiler @antazoey (#2089)
Special thanks to: @NotPeopling2day, @antazoey, @banteg, @dtdang and @simlecode
Ape 0.7.23
Changes
- fix: bug where compilers output selection wasn't updating when contract types changes compiler @antazoey (#2086)
- fix:
TransactionAPI
abstract methods bug during receipt decoding @antazoey (#2084) - refactor: utilize super().config @antazoey (#2083)
- fix: issue when reassigned
project
to something else during exception in console @antazoey (#2082) - fix: issues with pattern matching for source file exclusions @antazoey (#2081)
- fix: handle HTTPError-based not-implemented RPCs and parity-trace detection error handling easement @antazoey (#2080)
Special thanks to: @antazoey
Ape 0.7.22
Ape 0.7.21
Ape 0.7.20
Changes
- fix: issue where
project
was not honored inconsole
function @antazoey (#2072) - refactor: misc, small changes @antazoey (#2074)
- chore: delete double-ly implemented
__getitem__
@antazoey (#2071) - chore: fix anomalous typing concern @antazoey (#2070)
- refactor: use
@raises_not_implemented()
instead ofraise
statements inBaseManager
ipython methods @antazoey (#2069) - feat: allow
contract.source_path
from non local project @antazoey (#2068) - feat: add more entries to
SOURCE_EXCLUDE_PATTERNS
@antazoey (#2067) - fix:
is_convertible
error handling @antazoey (#2065) - feat:
--config-override
option forcompile
CLIs @antazoey (#2064) - feat: allow
convert(0, AddressType)
to work @antazoey (#2066) - fix: raise error when env var WEB3_PROVIDER_URI set @antazoey (#2063)
- feat:
NetworkNotFoundError
handle case when no networks @antazoey (#2062) - refactor:
exclude
track by name instead of path @antazoey (#2061) - fix: issue where couldn't use scripts with
cls=ConnectedProviderCommand, use_cls_types=False)
@antazoey (#2056) - fix: remove double caching for
ProviderAPI.config
@antazoey (#2060) - chore: set contractName using constructor @antazoey (#2058)
- fix: ignore debug-logging regular
AttributeError
s @antazoey (#2054) - fix: handle
None
blob-receipt gas values @antazoey (#2051) - fix: Issue preventing
ContractContainer.source_id
from working @antazoey (#2052) - fix: issue where could not have dependencies with
contracts_folder
pointed at the root project path @antazoey (#2048) - fix: issue when contracts w/o source IDs would not enrich @antazoey (#2047)
- feat: add tempdir helpers in
ape.utils.os
@antazoey (#2050)
Special thanks to: @antazoey