Permifrost is over-modularized
Describe the feature
Currently, permifrost is over-modularized, due to the origins of the project. As an example, one of the core files in this repo is 1761 lines and nested within core/permissions/utils
wc -l src/permifrost/core/permissions/utils/snowflake_grants.py
1761 src/permifrost/core/permissions/utils/snowflake_grants.py
This makes it difficult for new contributors to get started with permifrost as they have to navigate an unintuitive set of paths to find where to make a change.
Demodularizing permifrost by moving most of the python modules into a root src/permifrost folder should make it easier to navigate and help with future refactoring efforts.
.
├── __init__.py
├── cli
│ ├── __init__.py
│ ├── __main__.py
│ ├── cli.py
│ └── permissions.py
└── core
├── __init__.py
├── logger.py
└── permissions
├── __init__.py
├── entities.py
├── snowflake_spec_loader.py
├── spec_schemas
│ ├── __init__.py
│ └── snowflake.py
├── types.py
└── utils
├── __init__.py
├── error.py
├── snowflake_connector.py
├── snowflake_grants.py
├── snowflake_permission.py
├── snowflake_role_grant_checker.py
└── spec_file_loader.py
consider a flattened structure, such as this:
❯ tree -P \*.py --prune
.
├── __init__.py
├── cli
│ ├── __init__.py
│ ├── __main__.py
│ ├── cli.py
│ └── permissions.py
├── entities.py
├── error.py
├── logger.py
├── snowflake_connector.py
├── snowflake_grants.py
├── snowflake_permission.py
├── snowflake_role_grant_checker.py
├── snowflake_spec_loader.py
├── spec_file_loader.py
├── spec_schemas
│ ├── __init__.py
│ └── snowflake.py
└── types.py