Closed kocubinski closed 2 years ago
Generated from: kocubinski/cosmos-util/org/module-dependencies.org
This document provides dependency analysis of modules in the Cosmos SDK located /x/
. Analyses were
generated from an XML export of JetBrains Goland’s Dependency Analysis feature with processing of
the graph done by Clojure code in this same repo. Reports are included as either text format or PNG
below the REPL command which generated them.
The current XML export was generated from main
on 2022-08-24.
Which SDK modules have formed cyclic dependency relationships which eachother? We’ll need a strategy to address each of these.
deps> (-> (dep-edges :prod) graph-from-edges cyclic-dependencies print-cyclic)
/x/auth/ <-> /x/authz/
/x/auth/ <-> /x/feegrant/
/x/auth/ <-> /x/staking/
/x/auth/ <-> /x/simulation/
/x/auth/ <-> /x/bank/
/x/auth/ <-> /x/gov/
/x/authz/ <-> /x/staking/
/x/authz/ <-> /x/bank/
/x/authz/ <-> /x/gov/
/x/distribution/ <-> /x/staking/
/x/gov/ <-> /x/params/
/x/gov/ <-> /x/staking/
/x/simulation/ <-> /x/staking/
Answers the question “What dependencies are introduced in the test phase only, and in which files?”.
The set of dependencies identified by the function diff(all, prod)
.
These can be addressed immediately, probably by moving the source files to the /tests
folder. Each
line represents an import statement in a particular file declaring a dependency from one module to
another which is not present in production.
Which modules?
deps> (->> (set/difference (dep-edges :all) (dep-edges :prod)) (sort-by first) print-edges)
/x/auth/ -> /x/genutil/
/x/auth/ -> /x/mint/
/x/authz/ -> /x/genutil/
/x/authz/ -> /x/mint/
/x/authz/ -> /x/params/
/x/bank/ -> /x/staking/
/x/bank/ -> /x/mint/
/x/capability/ -> /x/genutil/
/x/capability/ -> /x/params/
/x/capability/ -> /x/staking/
/x/capability/ -> /x/auth/
/x/capability/ -> /x/bank/
/x/crisis/ -> /x/distribution/
/x/distribution/ -> /x/mint/
/x/distribution/ -> /x/bank/
/x/distribution/ -> /x/genutil/
/x/evidence/ -> /x/mint/
/x/evidence/ -> /x/bank/
/x/evidence/ -> /x/slashing/
/x/evidence/ -> /x/params/
/x/evidence/ -> /x/genutil/
/x/feegrant/ -> /x/genutil/
/x/feegrant/ -> /x/bank/
/x/feegrant/ -> /x/mint/
/x/feegrant/ -> /x/staking/
/x/feegrant/ -> /x/params/
/x/feegrant/ -> /x/gov/
/x/gov/ -> /x/upgrade/
/x/gov/ -> /x/distribution/
/x/gov/ -> /x/bank/
/x/gov/ -> /x/mint/
/x/group/ -> /x/params/
/x/group/ -> /x/genutil/
/x/group/ -> /x/mint/
/x/group/ -> /x/staking/
/x/mint/ -> /x/bank/
/x/mint/ -> /x/genutil/
/x/mint/ -> /x/staking/
/x/nft/ -> /x/staking/
/x/nft/ -> /x/bank/
/x/nft/ -> /x/params/
/x/nft/ -> /x/genutil/
/x/nft/ -> /x/mint/
/x/params/ -> /x/genutil/
/x/params/ -> /x/auth/
/x/params/ -> /x/staking/
/x/params/ -> /x/bank/
/x/slashing/ -> /x/bank/
/x/slashing/ -> /x/mint/
/x/slashing/ -> /x/genutil/
/x/staking/ -> /x/mint/
/x/staking/ -> /x/bank/
;; => nil
Which files?
deps> (print-edges (novel-test-refs))
/x/auth/client/testutil/suite.go -> /x/genutil/client/cli/init.go
/x/auth/testutil/app_config.go -> /x/genutil/types/types.go
/x/auth/testutil/app_config.go -> /x/mint/types/keys.go
/x/authz/testutil/app_config.go -> /x/params/types/keys.go
/x/authz/testutil/app_config.go -> /x/genutil/types/types.go
/x/authz/testutil/app_config.go -> /x/mint/types/keys.go
/x/bank/bench_test.go -> /x/staking/types/pool.go
/x/bank/keeper/genesis_test.go -> /x/mint/types/keys.go
/x/bank/keeper/grpc_query_test.go -> /x/mint/types/keys.go
/x/bank/keeper/keeper_test.go -> /x/mint/types/keys.go
/x/bank/testutil/test_helpers.go -> /x/mint/types/keys.go
/x/capability/capability_test.go -> /x/bank/types/keys.go
/x/capability/genesis_test.go -> /x/staking/types/keys.go
/x/capability/genesis_test.go -> /x/bank/types/keys.go
/x/capability/testutil/app_config.go -> /x/params/types/keys.go
/x/capability/testutil/app_config.go -> /x/staking/types/keys.go
/x/capability/testutil/app_config.go -> /x/auth/types/keys.go
/x/capability/testutil/app_config.go -> /x/bank/types/keys.go
/x/capability/testutil/app_config.go -> /x/auth/types/permissions.go
/x/capability/testutil/app_config.go -> /x/staking/types/pool.go
/x/capability/testutil/app_config.go -> /x/genutil/types/types.go
/x/crisis/migrations/v2/migrate_test.go -> /x/distribution/module.go
/x/distribution/client/testutil/suite.go -> /x/mint/types/genesis.pb.go
/x/distribution/client/testutil/suite.go -> /x/mint/types/mint.pb.go
/x/distribution/client/testutil/suite.go -> /x/mint/types/keys.go
/x/distribution/keeper/allocation_test.go -> /x/bank/testutil/test_helpers.go
/x/distribution/keeper/allocation_test.go -> /x/bank/keeper/keeper.go
/x/distribution/keeper/delegation_test.go -> /x/bank/keeper/view.go
/x/distribution/keeper/delegation_test.go -> /x/bank/testutil/test_helpers.go
/x/distribution/keeper/delegation_test.go -> /x/bank/keeper/keeper.go
/x/distribution/keeper/grpc_query_test.go -> /x/bank/testutil/test_helpers.go
/x/distribution/keeper/grpc_query_test.go -> /x/bank/keeper/keeper.go
/x/distribution/keeper/keeper_test.go -> /x/bank/keeper/view.go
/x/distribution/keeper/keeper_test.go -> /x/bank/testutil/test_helpers.go
/x/distribution/keeper/keeper_test.go -> /x/bank/keeper/keeper.go
/x/distribution/keeper/msg_server_test.go -> /x/bank/keeper/view.go
/x/distribution/simulation/operations_test.go -> /x/bank/keeper/keeper.go
/x/distribution/simulation/operations_test.go -> /x/bank/testutil/test_helpers.go
/x/distribution/testutil/app_config.go -> /x/bank/types/keys.go
/x/distribution/testutil/app_config.go -> /x/genutil/types/types.go
/x/distribution/testutil/app_config.go -> /x/mint/types/keys.go
/x/evidence/keeper/infraction_test.go -> /x/slashing/keeper/keeper.go
/x/evidence/keeper/infraction_test.go -> /x/slashing/keeper/unjail.go
/x/evidence/keeper/infraction_test.go -> /x/bank/keeper/view.go
/x/evidence/keeper/infraction_test.go -> /x/mint/types/keys.go
/x/evidence/keeper/infraction_test.go -> /x/slashing/keeper/infractions.go
/x/evidence/keeper/infraction_test.go -> /x/bank/keeper/keeper.go
/x/evidence/keeper/infraction_test.go -> /x/slashing/keeper/signing_info.go
/x/evidence/testutil/app_config.go -> /x/params/types/keys.go
/x/evidence/testutil/app_config.go -> /x/slashing/types/keys.go
/x/evidence/testutil/app_config.go -> /x/bank/types/keys.go
/x/evidence/testutil/app_config.go -> /x/genutil/types/types.go
/x/evidence/testutil/app_config.go -> /x/mint/types/keys.go
/x/feegrant/client/testutil/suite.go -> /x/gov/client/testutil/helpers.go
/x/feegrant/client/testutil/suite.go -> /x/gov/types/v1beta1/tx.pb.go
/x/feegrant/client/testutil/suite.go -> /x/gov/types/v1/tx.pb.go
/x/feegrant/client/testutil/suite.go -> /x/gov/types/v1beta1/proposal.go
/x/feegrant/filtered_fee_test.go -> /x/bank/types/tx.pb.go
/x/feegrant/simulation/operations_test.go -> /x/bank/testutil/test_helpers.go
/x/feegrant/simulation/operations_test.go -> /x/bank/keeper/keeper.go
/x/feegrant/testutil/app_config.go -> /x/params/types/keys.go
/x/feegrant/testutil/app_config.go -> /x/staking/types/keys.go
/x/feegrant/testutil/app_config.go -> /x/bank/types/keys.go
/x/feegrant/testutil/app_config.go -> /x/staking/types/pool.go
/x/feegrant/testutil/app_config.go -> /x/genutil/types/types.go
/x/feegrant/testutil/app_config.go -> /x/mint/types/keys.go
/x/gov/abci_test.go -> /x/bank/keeper/view.go
/x/gov/client/cli/parse_test.go -> /x/bank/types/codec.go
/x/gov/client/cli/parse_test.go -> /x/bank/types/tx.pb.go
/x/gov/genesis_test.go -> /x/bank/types/keys.go
/x/gov/genesis_test.go -> /x/bank/keeper/view.go
/x/gov/genesis_test.go -> /x/distribution/types/keys.go
/x/gov/genesis_test.go -> /x/distribution/keeper/genesis.go
/x/gov/genesis_test.go -> /x/bank/keeper/keeper.go
/x/gov/keeper/common_test.go -> /x/bank/types/msgs.go
/x/gov/keeper/deposit_test.go -> /x/bank/keeper/view.go
/x/gov/keeper/keeper_test.go -> /x/mint/types/keys.go
/x/gov/keeper/keeper_test.go -> /x/bank/keeper/keeper.go
/x/gov/keeper/msg_server_test.go -> /x/bank/types/tx.pb.go
/x/gov/keeper/msg_server_test.go -> /x/bank/types/genesis.pb.go
/x/gov/migrations/v3/store_test.go -> /x/upgrade/types/proposal.go
/x/gov/migrations/v3/store_test.go -> /x/upgrade/module.go
/x/gov/migrations/v3/store_test.go -> /x/upgrade/types/upgrade.pb.go
/x/gov/migrations/v4/store_test.go -> /x/upgrade/module.go
/x/gov/simulation/operations_test.go -> /x/mint/types/minter.go
/x/gov/simulation/operations_test.go -> /x/mint/keeper/keeper.go
/x/gov/simulation/operations_test.go -> /x/mint/types/params.go
/x/gov/simulation/operations_test.go -> /x/bank/testutil/test_helpers.go
/x/group/keeper/keeper_test.go -> /x/mint/types/keys.go
/x/group/module/abci_test.go -> /x/staking/keeper/keeper.go
/x/group/testutil/app_config.go -> /x/params/types/keys.go
/x/group/testutil/app_config.go -> /x/staking/types/keys.go
/x/group/testutil/app_config.go -> /x/staking/types/pool.go
/x/group/testutil/app_config.go -> /x/genutil/types/types.go
/x/group/testutil/app_config.go -> /x/mint/types/keys.go
/x/mint/testutil/app_config.go -> /x/staking/types/keys.go
/x/mint/testutil/app_config.go -> /x/bank/types/keys.go
/x/mint/testutil/app_config.go -> /x/staking/types/pool.go
/x/mint/testutil/app_config.go -> /x/genutil/types/types.go
/x/nft/simulation/operations_test.go -> /x/bank/testutil/test_helpers.go
/x/nft/simulation/operations_test.go -> /x/staking/keeper/keeper.go
/x/nft/simulation/operations_test.go -> /x/bank/keeper/keeper.go
/x/nft/simulation/operations_test.go -> /x/staking/keeper/power_reduction.go
/x/nft/testutil/app_config.go -> /x/params/types/keys.go
/x/nft/testutil/app_config.go -> /x/staking/types/keys.go
/x/nft/testutil/app_config.go -> /x/bank/types/keys.go
/x/nft/testutil/app_config.go -> /x/staking/types/pool.go
/x/nft/testutil/app_config.go -> /x/genutil/types/types.go
/x/nft/testutil/app_config.go -> /x/mint/types/keys.go
/x/params/proposal_handler_test.go -> /x/staking/types/keys.go
/x/params/proposal_handler_test.go -> /x/staking/types/params_legacy.go
/x/params/testutil/app_config.go -> /x/staking/types/keys.go
/x/params/testutil/app_config.go -> /x/auth/types/keys.go
/x/params/testutil/app_config.go -> /x/bank/types/keys.go
/x/params/testutil/app_config.go -> /x/auth/types/permissions.go
/x/params/testutil/app_config.go -> /x/staking/types/pool.go
/x/params/testutil/app_config.go -> /x/genutil/types/types.go
/x/slashing/abci_test.go -> /x/bank/keeper/view.go
/x/slashing/abci_test.go -> /x/bank/keeper/keeper.go
/x/slashing/app_test.go -> /x/bank/keeper/view.go
/x/slashing/app_test.go -> /x/bank/keeper/keeper.go
/x/slashing/simulation/operations_test.go -> /x/mint/types/minter.go
/x/slashing/simulation/operations_test.go -> /x/bank/keeper/keeper.go
/x/slashing/simulation/operations_test.go -> /x/mint/keeper/keeper.go
/x/slashing/simulation/operations_test.go -> /x/mint/types/params.go
/x/slashing/simulation/operations_test.go -> /x/bank/testutil/test_helpers.go
/x/slashing/testutil/app_config.go -> /x/bank/types/keys.go
/x/slashing/testutil/app_config.go -> /x/genutil/types/types.go
/x/slashing/testutil/app_config.go -> /x/mint/types/keys.go
/x/staking/app_test.go -> /x/bank/types/genesis.pb.go
/x/staking/keeper/delegation_test.go -> /x/bank/keeper/view.go
/x/staking/keeper/delegation_test.go -> /x/bank/testutil/test_helpers.go
/x/staking/keeper/genesis_test.go -> /x/bank/testutil/test_helpers.go
/x/staking/keeper/grpc_query_test.go -> /x/bank/keeper/view.go
/x/staking/keeper/msg_server_test.go -> /x/bank/keeper/view.go
/x/staking/keeper/msg_server_test.go -> /x/bank/testutil/test_helpers.go
/x/staking/keeper/slash_test.go -> /x/bank/keeper/view.go
/x/staking/keeper/slash_test.go -> /x/bank/testutil/test_helpers.go
/x/staking/keeper/validator_test.go -> /x/bank/testutil/test_helpers.go
/x/staking/simulation/operations_test.go -> /x/mint/types/minter.go
/x/staking/simulation/operations_test.go -> /x/mint/keeper/keeper.go
/x/staking/simulation/operations_test.go -> /x/mint/types/params.go
/x/staking/simulation/operations_test.go -> /x/bank/testutil/test_helpers.go
/x/staking/simulation/operations_test.go -> /x/bank/types/genesis.pb.go
Excluding test files, which modules depend on which?
deps> (visualize (dep-edges :prod))
deps> (->> (dep-edges :prod) (sort-by first) (print-edges))
/x/auth/ -> /x/simulation/
/x/auth/ -> /x/authz/
/x/auth/ -> /x/params/
/x/auth/ -> /x/bank/
/x/auth/ -> /x/gov/
/x/auth/ -> /x/staking/
/x/auth/ -> /x/feegrant/
/x/authz/ -> /x/bank/
/x/authz/ -> /x/simulation/
/x/authz/ -> /x/auth/
/x/authz/ -> /x/gov/
/x/authz/ -> /x/staking/
/x/bank/ -> /x/authz/
/x/bank/ -> /x/auth/
/x/bank/ -> /x/distribution/
/x/bank/ -> /x/params/
/x/bank/ -> /x/simulation/
/x/bank/ -> /x/gov/
/x/crisis/ -> /x/params/
/x/crisis/ -> /x/gov/
/x/crisis/ -> /x/auth/
/x/crisis/ -> /x/authz/
/x/distribution/ -> /x/params/
/x/distribution/ -> /x/staking/
/x/distribution/ -> /x/gov/
/x/distribution/ -> /x/auth/
/x/distribution/ -> /x/simulation/
/x/distribution/ -> /x/authz/
/x/evidence/ -> /x/auth/
/x/evidence/ -> /x/staking/
/x/evidence/ -> /x/authz/
/x/feegrant/ -> /x/simulation/
/x/feegrant/ -> /x/authz/
/x/feegrant/ -> /x/auth/
/x/genutil/ -> /x/auth/
/x/genutil/ -> /x/gov/
/x/genutil/ -> /x/bank/
/x/genutil/ -> /x/staking/
/x/gov/ -> /x/auth/
/x/gov/ -> /x/authz/
/x/gov/ -> /x/simulation/
/x/gov/ -> /x/staking/
/x/gov/ -> /x/params/
/x/group/ -> /x/simulation/
/x/group/ -> /x/authz/
/x/group/ -> /x/auth/
/x/group/ -> /x/bank/
/x/mint/ -> /x/auth/
/x/mint/ -> /x/params/
/x/mint/ -> /x/authz/
/x/mint/ -> /x/gov/
/x/mint/ -> /x/simulation/
/x/nft/ -> /x/simulation/
/x/nft/ -> /x/auth/
/x/params/ -> /x/simulation/
/x/params/ -> /x/gov/
/x/simulation/ -> /x/auth/
/x/simulation/ -> /x/staking/
/x/slashing/ -> /x/staking/
/x/slashing/ -> /x/distribution/
/x/slashing/ -> /x/simulation/
/x/slashing/ -> /x/params/
/x/slashing/ -> /x/auth/
/x/slashing/ -> /x/authz/
/x/slashing/ -> /x/gov/
/x/staking/ -> /x/gov/
/x/staking/ -> /x/auth/
/x/staking/ -> /x/authz/
/x/staking/ -> /x/params/
/x/staking/ -> /x/distribution/
/x/staking/ -> /x/simulation/
/x/upgrade/ -> /x/auth/
/x/upgrade/ -> /x/gov/
/x/upgrade/ -> /x/authz/
Which files depends on which files?
deps> (print-files :prod)
/x/auth/exported/exported.go -> /x/params/types/paramset.go
/x/auth/keeper/msg_server.go -> /x/gov/types/errors.go
/x/auth/migrations/v043/store.go -> /x/staking/types/staking.pb.go
/x/auth/migrations/v043/store.go -> /x/staking/types/query.pb.go
/x/auth/migrations/v043/store.go -> /x/bank/types/query.pb.go
/x/auth/module.go -> /x/gov/types/keys.go
/x/auth/simulation/params.go -> /x/simulation/params.go
/x/auth/tx/module/module.go -> /x/feegrant/keeper/keeper.go
/x/auth/types/codec.go -> /x/authz/codec/cdc.go
/x/auth/types/params_legacy.go -> /x/params/types/paramset.go
/x/auth/types/params_legacy.go -> /x/params/types/table.go
/x/auth/vesting/types/codec.go -> /x/authz/codec/cdc.go
/x/authz/client/cli/query.go -> /x/bank/types/authz.pb.go
/x/authz/client/cli/query.go -> /x/bank/types/send_authorization.go
/x/authz/client/cli/tx.go -> /x/staking/types/staking.pb.go
/x/authz/client/cli/tx.go -> /x/staking/types/authz.go
/x/authz/client/cli/tx.go -> /x/staking/types/query.pb.go
/x/authz/client/cli/tx.go -> /x/staking/types/authz.pb.go
/x/authz/client/cli/tx.go -> /x/bank/types/send_authorization.go
/x/authz/client/cli/tx.go -> /x/bank/types/authz.pb.go
/x/authz/client/cli/tx.go -> /x/auth/client/tx.go
/x/authz/expected_keepers.go -> /x/auth/types/account.go
/x/authz/msgs.go -> /x/auth/migrations/legacytx/stdsign.go
/x/authz/simulation/genesis.go -> /x/bank/types/send_authorization.go
/x/authz/simulation/genesis.go -> /x/gov/types/v1/tx.pb.go
/x/authz/simulation/operations.go -> /x/auth/tx/config.go
/x/authz/simulation/operations.go -> /x/bank/types/tx.pb.go
/x/authz/simulation/operations.go -> /x/bank/types/send_authorization.go
/x/authz/simulation/operations.go -> /x/bank/types/msgs.go
/x/authz/simulation/operations.go -> /x/bank/types/authz.pb.go
/x/authz/simulation/operations.go -> /x/simulation/operation.go
/x/authz/simulation/operations.go -> /x/auth/types/account.go
/x/authz/simulation/operations.go -> /x/auth/tx/mode_handler.go
/x/bank/exported/exported.go -> /x/params/types/paramset.go
/x/bank/keeper/keeper.go -> /x/auth/types/account.go
/x/bank/keeper/keeper.go -> /x/auth/types/permissions.go
/x/bank/keeper/msg_server.go -> /x/gov/types/errors.go
/x/bank/migrations/v1/types.go -> /x/auth/migrations/v042/types.go
/x/bank/migrations/v2/store.go -> /x/auth/migrations/v042/types.go
/x/bank/module.go -> /x/gov/types/keys.go
/x/bank/module.go -> /x/auth/types/account.go
/x/bank/module.go -> /x/auth/types/permissions.go
/x/bank/simulation/operations.go -> /x/distribution/types/keys.go
/x/bank/simulation/operations.go -> /x/simulation/operation.go
/x/bank/simulation/operations.go -> /x/auth/types/account.go
/x/bank/simulation/params.go -> /x/simulation/params.go
/x/bank/types/codec.go -> /x/authz/authorizations.go
/x/bank/types/codec.go -> /x/authz/codec/cdc.go
/x/bank/types/expected_keepers.go -> /x/auth/types/permissions.go
/x/bank/types/expected_keepers.go -> /x/auth/types/account.go
/x/bank/types/params_legacy.go -> /x/params/types/paramset.go
/x/bank/types/params_legacy.go -> /x/params/types/table.go
/x/bank/types/send_authorization.go -> /x/authz/authorizations.go
/x/crisis/exported/exported.go -> /x/params/types/paramset.go
/x/crisis/keeper/msg_server.go -> /x/gov/types/errors.go
/x/crisis/module.go -> /x/auth/types/keys.go
/x/crisis/module.go -> /x/gov/types/keys.go
/x/crisis/module.go -> /x/auth/types/account.go
/x/crisis/types/codec.go -> /x/authz/codec/cdc.go
/x/crisis/types/legacy_params.go -> /x/params/types/paramset.go
/x/crisis/types/legacy_params.go -> /x/params/types/table.go
/x/distribution/exported/exported.go -> /x/params/types/paramset.go
/x/distribution/keeper/alias_functions.go -> /x/auth/types/account.go
/x/distribution/keeper/allocation.go -> /x/auth/types/account.go
/x/distribution/keeper/allocation.go -> /x/staking/types/exported.go
/x/distribution/keeper/delegation.go -> /x/staking/types/exported.go
/x/distribution/keeper/genesis.go -> /x/auth/types/account.go
/x/distribution/keeper/grpc_query.go -> /x/staking/types/exported.go
/x/distribution/keeper/hooks.go -> /x/staking/types/expected_keepers.go
/x/distribution/keeper/invariants.go -> /x/auth/types/account.go
/x/distribution/keeper/invariants.go -> /x/staking/types/delegation.go
/x/distribution/keeper/invariants.go -> /x/staking/types/exported.go
/x/distribution/keeper/msg_server.go -> /x/gov/types/errors.go
/x/distribution/keeper/validator.go -> /x/staking/types/exported.go
/x/distribution/migrations/v042/types.go -> /x/auth/migrations/v042/types.go
/x/distribution/migrations/v043/helpers.go -> /x/auth/migrations/v042/types.go
/x/distribution/module.go -> /x/staking/types/expected_keepers.go
/x/distribution/module.go -> /x/gov/types/keys.go
/x/distribution/module.go -> /x/auth/types/account.go
/x/distribution/module.go -> /x/auth/types/keys.go
/x/distribution/simulation/operations.go -> /x/auth/tx/config.go
/x/distribution/simulation/operations.go -> /x/staking/types/delegation.go
/x/distribution/simulation/operations.go -> /x/staking/types/exported.go
/x/distribution/simulation/operations.go -> /x/staking/types/validator.go
/x/distribution/simulation/operations.go -> /x/simulation/operation.go
/x/distribution/simulation/operations.go -> /x/auth/types/account.go
/x/distribution/simulation/operations.go -> /x/auth/tx/mode_handler.go
/x/distribution/simulation/operations.go -> /x/simulation/util.go
/x/distribution/simulation/params.go -> /x/simulation/params.go
/x/distribution/types/codec.go -> /x/authz/codec/cdc.go
/x/distribution/types/expected_keepers.go -> /x/staking/types/staking.pb.go
/x/distribution/types/expected_keepers.go -> /x/auth/types/account.go
/x/distribution/types/expected_keepers.go -> /x/staking/types/exported.go
/x/distribution/types/params_legacy.go -> /x/params/types/paramset.go
/x/distribution/types/params_legacy.go -> /x/params/types/table.go
/x/evidence/keeper/infraction.go -> /x/staking/types/exported.go
/x/evidence/spec/06_begin_block.md -> /x/staking/spec/02_state_transitions.md
/x/evidence/types/codec.go -> /x/authz/codec/cdc.go
/x/evidence/types/expected_keepers.go -> /x/staking/types/staking.pb.go
/x/evidence/types/expected_keepers.go -> /x/auth/types/account.go
/x/evidence/types/expected_keepers.go -> /x/staking/types/exported.go
/x/feegrant/codec.go -> /x/authz/codec/cdc.go
/x/feegrant/expected_keepers.go -> /x/auth/types/account.go
/x/feegrant/keeper/keeper.go -> /x/auth/ante/expected_keepers.go
/x/feegrant/msgs.go -> /x/auth/migrations/legacytx/stdsign.go
/x/feegrant/simulation/operations.go -> /x/auth/tx/config.go
/x/feegrant/simulation/operations.go -> /x/simulation/operation.go
/x/feegrant/simulation/operations.go -> /x/auth/types/account.go
/x/feegrant/simulation/operations.go -> /x/auth/tx/mode_handler.go
/x/feegrant/simulation/operations.go -> /x/simulation/util.go
/x/feegrant/spec/01_concepts.md -> /x/auth/spec/03_antehandlers.md
/x/genutil/client/cli/gentx.go -> /x/staking/client/cli/flags.go
/x/genutil/client/cli/gentx.go -> /x/staking/client/cli/tx.go
/x/genutil/client/cli/gentx.go -> /x/auth/client/tx.go
/x/genutil/client/cli/init.go -> /x/staking/types/staking.pb.go
/x/genutil/client/cli/init.go -> /x/staking/types/genesis.pb.go
/x/genutil/client/cli/init.go -> /x/staking/types/keys.go
/x/genutil/collect.go -> /x/staking/types/staking.pb.go
/x/genutil/collect.go -> /x/bank/exported/exported.go
/x/genutil/collect.go -> /x/staking/types/tx.pb.go
/x/genutil/gentx.go -> /x/staking/types/staking.pb.go
/x/genutil/gentx.go -> /x/staking/types/keys.go
/x/genutil/gentx.go -> /x/staking/types/genesis.pb.go
/x/genutil/gentx.go -> /x/bank/exported/exported.go
/x/genutil/migrations/v043/migrate.go -> /x/bank/migrations/v1/types.go
/x/genutil/migrations/v043/migrate.go -> /x/bank/types/genesis.pb.go
/x/genutil/migrations/v043/migrate.go -> /x/gov/migrations/v2/keys.go
/x/genutil/migrations/v043/migrate.go -> /x/bank/migrations/v2/json.go
/x/genutil/migrations/v043/migrate.go -> /x/gov/types/v1beta1/genesis.pb.go
/x/genutil/migrations/v043/migrate.go -> /x/gov/migrations/v1/types.go
/x/genutil/migrations/v043/migrate.go -> /x/gov/migrations/v2/json.go
/x/genutil/migrations/v043/migrate.go -> /x/bank/migrations/v2/keys.go
/x/genutil/migrations/v046/migrate.go -> /x/gov/migrations/v2/keys.go
/x/genutil/migrations/v046/migrate.go -> /x/staking/migrations/v3/keys.go
/x/genutil/migrations/v046/migrate.go -> /x/staking/migrations/v2/keys.go
/x/genutil/migrations/v046/migrate.go -> /x/gov/types/v1beta1/genesis.pb.go
/x/genutil/migrations/v046/migrate.go -> /x/staking/types/genesis.pb.go
/x/genutil/migrations/v046/migrate.go -> /x/staking/migrations/v3/json.go
/x/genutil/migrations/v046/migrate.go -> /x/gov/migrations/v3/json.go
/x/genutil/migrations/v046/migrate.go -> /x/gov/migrations/v3/keys.go
/x/genutil/migrations/v047/migrate.go -> /x/bank/types/genesis.pb.go
/x/genutil/migrations/v047/migrate.go -> /x/bank/types/keys.go
/x/genutil/migrations/v047/migrate.go -> /x/bank/migrations/v4/gen_state.go
/x/genutil/types/expected_keepers.go -> /x/bank/exported/exported.go
/x/genutil/types/expected_keepers.go -> /x/auth/types/account.go
/x/genutil/types/genesis_state.go -> /x/staking/types/tx.pb.go
/x/gov/client/utils/query.go -> /x/auth/tx/query.go
/x/gov/exported/exported.go -> /x/params/types/paramset.go
/x/gov/genesis.go -> /x/auth/types/account.go
/x/gov/keeper/invariants.go -> /x/auth/types/account.go
/x/gov/keeper/keeper.go -> /x/auth/types/account.go
/x/gov/keeper/msg_server.go -> /x/auth/types/account.go
/x/gov/keeper/proposal.go -> /x/auth/types/account.go
/x/gov/keeper/tally.go -> /x/staking/types/exported.go
/x/gov/migrations/v1/types.go -> /x/auth/migrations/v042/types.go
/x/gov/migrations/v3/convert.go -> /x/auth/types/account.go
/x/gov/module.go -> /x/auth/types/account.go
/x/gov/module.go -> /x/params/types/table.go
/x/gov/simulation/operations.go -> /x/simulation/transition_matrix.go
/x/gov/simulation/operations.go -> /x/simulation/operation.go
/x/gov/simulation/operations.go -> /x/auth/types/account.go
/x/gov/simulation/operations.go -> /x/simulation/util.go
/x/gov/simulation/params.go -> /x/simulation/params.go
/x/gov/simulation/proposals.go -> /x/simulation/params.go
/x/gov/types/expected_keepers.go -> /x/auth/types/account.go
/x/gov/types/expected_keepers.go -> /x/staking/types/exported.go
/x/gov/types/v1/codec.go -> /x/authz/codec/cdc.go
/x/gov/types/v1/params_legacy.go -> /x/params/types/paramset.go
/x/gov/types/v1/params_legacy.go -> /x/params/types/table.go
/x/gov/types/v1beta1/codec.go -> /x/authz/codec/cdc.go
/x/group/codec.go -> /x/authz/codec/cdc.go
/x/group/expected_keepers.go -> /x/auth/types/account.go
/x/group/keeper/msg_server.go -> /x/auth/types/auth.pb.go
/x/group/simulation/genesis.go -> /x/bank/types/tx.pb.go
/x/group/simulation/operations.go -> /x/auth/tx/config.go
/x/group/simulation/operations.go -> /x/simulation/operation.go
/x/group/simulation/operations.go -> /x/auth/types/account.go
/x/group/simulation/operations.go -> /x/auth/tx/mode_handler.go
/x/mint/exported/exported.go -> /x/params/types/paramset.go
/x/mint/keeper/msg_server.go -> /x/gov/types/errors.go
/x/mint/module.go -> /x/gov/types/keys.go
/x/mint/module.go -> /x/auth/types/account.go
/x/mint/module.go -> /x/auth/types/keys.go
/x/mint/simulation/params.go -> /x/simulation/params.go
/x/mint/types/codec.go -> /x/authz/codec/cdc.go
/x/mint/types/expected_keepers.go -> /x/auth/types/account.go
/x/mint/types/params_legacy.go -> /x/params/types/paramset.go
/x/mint/types/params_legacy.go -> /x/params/types/table.go
/x/nft/expected_keepers.go -> /x/auth/types/account.go
/x/nft/simulation/operations.go -> /x/auth/tx/config.go
/x/nft/simulation/operations.go -> /x/simulation/operation.go
/x/nft/simulation/operations.go -> /x/auth/types/account.go
/x/nft/simulation/operations.go -> /x/auth/tx/mode_handler.go
/x/params/client/cli/tx.go -> /x/gov/types/v1beta1/msgs.go
/x/params/client/proposal_handler.go -> /x/gov/client/proposal_handler.go
/x/params/module.go -> /x/gov/types/v1beta1/content.go
/x/params/proposal_handler.go -> /x/gov/types/v1beta1/content.go
/x/params/simulation/proposals.go -> /x/simulation/params.go
/x/params/types/proposal/codec.go -> /x/gov/types/v1beta1/content.go
/x/params/types/proposal/proposal.go -> /x/gov/types/v1beta1/proposal.go
/x/params/types/proposal/proposal.go -> /x/gov/types/v1beta1/content.go
/x/simulation/expected_keepers.go -> /x/auth/types/account.go
/x/simulation/params.go -> /x/staking/types/genesis.go
/x/simulation/params.go -> /x/staking/types/staking.pb.go
/x/simulation/params.go -> /x/staking/types/genesis.pb.go
/x/simulation/util.go -> /x/auth/types/account.go
/x/slashing/exported/exported.go -> /x/params/types/paramset.go
/x/slashing/keeper/genesis.go -> /x/staking/types/exported.go
/x/slashing/keeper/hooks.go -> /x/staking/types/exported.go
/x/slashing/keeper/infractions.go -> /x/staking/types/exported.go
/x/slashing/keeper/msg_server.go -> /x/gov/types/errors.go
/x/slashing/keeper/unjail.go -> /x/staking/types/exported.go
/x/slashing/migrations/v042/types.go -> /x/auth/migrations/v042/types.go
/x/slashing/migrations/v043/store.go -> /x/distribution/migrations/v043/helpers.go
/x/slashing/module.go -> /x/staking/types/expected_keepers.go
/x/slashing/module.go -> /x/gov/types/keys.go
/x/slashing/module.go -> /x/auth/types/account.go
/x/slashing/simulation/operations.go -> /x/auth/tx/config.go
/x/slashing/simulation/operations.go -> /x/staking/types/exported.go
/x/slashing/simulation/operations.go -> /x/staking/types/validator.go
/x/slashing/simulation/operations.go -> /x/simulation/operation.go
/x/slashing/simulation/operations.go -> /x/auth/types/account.go
/x/slashing/simulation/operations.go -> /x/auth/tx/mode_handler.go
/x/slashing/simulation/params.go -> /x/simulation/params.go
/x/slashing/types/codec.go -> /x/authz/codec/cdc.go
/x/slashing/types/expected_keepers.go -> /x/params/types/subspace.go
/x/slashing/types/expected_keepers.go -> /x/staking/types/staking.pb.go
/x/slashing/types/expected_keepers.go -> /x/auth/types/account.go
/x/slashing/types/expected_keepers.go -> /x/params/types/table.go
/x/slashing/types/expected_keepers.go -> /x/params/types/paramset.go
/x/slashing/types/expected_keepers.go -> /x/staking/types/exported.go
/x/slashing/types/params_legacy.go -> /x/params/types/paramset.go
/x/slashing/types/params_legacy.go -> /x/params/types/table.go
/x/staking/exported/exported.go -> /x/params/types/paramset.go
/x/staking/keeper/genesis.go -> /x/auth/types/account.go
/x/staking/keeper/grpc_query.go -> /x/auth/types/account.go
/x/staking/keeper/invariants.go -> /x/auth/types/account.go
/x/staking/keeper/msg_server.go -> /x/gov/types/errors.go
/x/staking/keeper/pool.go -> /x/auth/types/account.go
/x/staking/migrations/v1/types.go -> /x/auth/migrations/v042/types.go
/x/staking/migrations/v2/store.go -> /x/auth/migrations/v042/types.go
/x/staking/migrations/v2/store.go -> /x/distribution/migrations/v043/helpers.go
/x/staking/migrations/v3/store.go -> /x/params/types/paramset.go
/x/staking/migrations/v3/store.go -> /x/params/types/subspace.go
/x/staking/migrations/v3/store.go -> /x/params/types/table.go
/x/staking/module.go -> /x/gov/types/keys.go
/x/staking/module.go -> /x/auth/types/account.go
/x/staking/simulation/operations.go -> /x/simulation/operation.go
/x/staking/simulation/operations.go -> /x/auth/types/account.go
/x/staking/simulation/operations.go -> /x/simulation/util.go
/x/staking/simulation/params.go -> /x/simulation/params.go
/x/staking/types/authz.go -> /x/authz/errors.go
/x/staking/types/authz.go -> /x/authz/authorizations.go
/x/staking/types/codec.go -> /x/authz/authorizations.go
/x/staking/types/codec.go -> /x/authz/codec/cdc.go
/x/staking/types/expected_keepers.go -> /x/auth/types/account.go
/x/staking/types/params_legacy.go -> /x/params/types/paramset.go
/x/staking/types/params_legacy.go -> /x/params/types/table.go
/x/upgrade/client/cli/parse.go -> /x/gov/client/cli/tx.go
/x/upgrade/client/cli/parse.go -> /x/gov/types/v1beta1/content.go
/x/upgrade/client/cli/tx.go -> /x/gov/types/v1beta1/msgs.go
/x/upgrade/client/cli/tx.go -> /x/gov/client/cli/tx.go
/x/upgrade/client/proposal_handler.go -> /x/gov/client/proposal_handler.go
/x/upgrade/handler.go -> /x/gov/types/v1beta1/content.go
/x/upgrade/keeper/msg_server.go -> /x/gov/types/errors.go
/x/upgrade/module.go -> /x/gov/types/v1beta1/content.go
/x/upgrade/module.go -> /x/gov/types/keys.go
/x/upgrade/module.go -> /x/auth/types/account.go
/x/upgrade/types/codec.go -> /x/gov/types/v1beta1/content.go
/x/upgrade/types/codec.go -> /x/authz/codec/cdc.go
/x/upgrade/types/msgs.go -> /x/auth/migrations/legacytx/stdsign.go
/x/upgrade/types/proposal.go -> /x/gov/types/v1beta1/proposal.go
/x/upgrade/types/proposal.go -> /x/gov/types/v1beta1/content.go
Finally, across the entier SDK which modules depend on which? Our goal is that the graph output should be a DAG.
deps> (visualize (dep-edges :all))
deps> (->> (dep-edges :all) (sort-by first) (print-edges))
/x/auth/ -> /x/simulation/
/x/auth/ -> /x/authz/
/x/auth/ -> /x/params/
/x/auth/ -> /x/genutil/
/x/auth/ -> /x/mint/
/x/auth/ -> /x/bank/
/x/auth/ -> /x/gov/
/x/auth/ -> /x/staking/
/x/auth/ -> /x/feegrant/
/x/authz/ -> /x/bank/
/x/authz/ -> /x/simulation/
/x/authz/ -> /x/genutil/
/x/authz/ -> /x/auth/
/x/authz/ -> /x/gov/
/x/authz/ -> /x/mint/
/x/authz/ -> /x/params/
/x/authz/ -> /x/staking/
/x/bank/ -> /x/staking/
/x/bank/ -> /x/authz/
/x/bank/ -> /x/auth/
/x/bank/ -> /x/distribution/
/x/bank/ -> /x/params/
/x/bank/ -> /x/simulation/
/x/bank/ -> /x/gov/
/x/bank/ -> /x/mint/
/x/capability/ -> /x/genutil/
/x/capability/ -> /x/params/
/x/capability/ -> /x/staking/
/x/capability/ -> /x/auth/
/x/capability/ -> /x/bank/
/x/crisis/ -> /x/params/
/x/crisis/ -> /x/gov/
/x/crisis/ -> /x/auth/
/x/crisis/ -> /x/authz/
/x/crisis/ -> /x/distribution/
/x/distribution/ -> /x/params/
/x/distribution/ -> /x/staking/
/x/distribution/ -> /x/gov/
/x/distribution/ -> /x/mint/
/x/distribution/ -> /x/auth/
/x/distribution/ -> /x/simulation/
/x/distribution/ -> /x/authz/
/x/distribution/ -> /x/bank/
/x/distribution/ -> /x/genutil/
/x/evidence/ -> /x/mint/
/x/evidence/ -> /x/bank/
/x/evidence/ -> /x/slashing/
/x/evidence/ -> /x/auth/
/x/evidence/ -> /x/params/
/x/evidence/ -> /x/genutil/
/x/evidence/ -> /x/staking/
/x/evidence/ -> /x/authz/
/x/feegrant/ -> /x/genutil/
/x/feegrant/ -> /x/simulation/
/x/feegrant/ -> /x/bank/
/x/feegrant/ -> /x/authz/
/x/feegrant/ -> /x/mint/
/x/feegrant/ -> /x/auth/
/x/feegrant/ -> /x/staking/
/x/feegrant/ -> /x/params/
/x/feegrant/ -> /x/gov/
/x/genutil/ -> /x/auth/
/x/genutil/ -> /x/gov/
/x/genutil/ -> /x/bank/
/x/genutil/ -> /x/staking/
/x/gov/ -> /x/upgrade/
/x/gov/ -> /x/auth/
/x/gov/ -> /x/authz/
/x/gov/ -> /x/distribution/
/x/gov/ -> /x/simulation/
/x/gov/ -> /x/staking/
/x/gov/ -> /x/bank/
/x/gov/ -> /x/params/
/x/gov/ -> /x/mint/
/x/group/ -> /x/simulation/
/x/group/ -> /x/authz/
/x/group/ -> /x/params/
/x/group/ -> /x/auth/
/x/group/ -> /x/genutil/
/x/group/ -> /x/mint/
/x/group/ -> /x/staking/
/x/group/ -> /x/bank/
/x/mint/ -> /x/bank/
/x/mint/ -> /x/genutil/
/x/mint/ -> /x/auth/
/x/mint/ -> /x/params/
/x/mint/ -> /x/authz/
/x/mint/ -> /x/staking/
/x/mint/ -> /x/gov/
/x/mint/ -> /x/simulation/
/x/nft/ -> /x/simulation/
/x/nft/ -> /x/staking/
/x/nft/ -> /x/bank/
/x/nft/ -> /x/auth/
/x/nft/ -> /x/params/
/x/nft/ -> /x/genutil/
/x/nft/ -> /x/mint/
/x/params/ -> /x/simulation/
/x/params/ -> /x/genutil/
/x/params/ -> /x/auth/
/x/params/ -> /x/staking/
/x/params/ -> /x/bank/
/x/params/ -> /x/gov/
/x/simulation/ -> /x/auth/
/x/simulation/ -> /x/staking/
/x/slashing/ -> /x/staking/
/x/slashing/ -> /x/distribution/
/x/slashing/ -> /x/simulation/
/x/slashing/ -> /x/bank/
/x/slashing/ -> /x/mint/
/x/slashing/ -> /x/params/
/x/slashing/ -> /x/auth/
/x/slashing/ -> /x/genutil/
/x/slashing/ -> /x/authz/
/x/slashing/ -> /x/gov/
/x/staking/ -> /x/gov/
/x/staking/ -> /x/auth/
/x/staking/ -> /x/mint/
/x/staking/ -> /x/bank/
/x/staking/ -> /x/authz/
/x/staking/ -> /x/params/
/x/staking/ -> /x/distribution/
/x/staking/ -> /x/simulation/
/x/upgrade/ -> /x/auth/
/x/upgrade/ -> /x/gov/
/x/upgrade/ -> /x/authz/
A formal, repeatable dependency analysis is needed to help formulate our strategy for Phase 4 of https://github.com/cosmos/cosmos-sdk/issues/11899.
https://gist.github.com/kocubinski/178da93d4173d56a79df5574fac50b4b was generated showing all module dependencies in text format.
Regarding the goal for this dependency graph, @amaurym comments:
1) that this list becomes empty? I.e. no module depends on any other? 2) Or that modules can depend on another (e.g. staking's go.mod can import bank), but in a acyclic way?
I'm not sure 1's even possible, and I think if we aim for 2, this list can become much shorter.