Code quality
ALN** occurrences by order of importance¶
| NOQA | Number of occurrences |
|---|---|
| ALN069: You can't import models from other components, see: https://www.notion.so/alaninsurance/Modular-monolith-a9d84f1318d34115bbd08b3648e5a587 ⧉", | 55 |
ALN043: You can only import things from a Component public module, see: https://www.notion.so/alaninsurance/Modular-monolith-a9d84f1318d34115bbd08b3648e5a587 ⧉", |
30 |
ALN039: The module public cannot import other components (or from apps/), it's meant to be the public interface of the component #{self.component_name}, see: https://www.notion.so/alaninsurance/Modular-monolith-a9d84f1318d34115bbd08b3648e5a587 ⧉", |
1 |
| ALN014: Checks that modification of attributes, or instantiation of policies, enrollments, employments and exemptions are only done inside the fr health insurance affiliation component only | 1 |
ALN045: HealthContract.query should not be called directly outside from the contracts_management/ module. Please check the guidelines: https://www.notion.so/alaninsurance/Contract-management-module-WIP-405f318eae714430a9e29ce40b2811bb?pvs=4#0ea62ff6f41148c5a385f7bc94a6b250 ⧉ |
28 |
| ALN009: Checks that models do not import business logic | 24 |
| ALN017: Do not use top of file imports for business_logic or services in controllers, admin_tools or models, unless for typing. See this Notion page : https://www.notion.so/alaninsurance/Imports-and-start-up-time-WIP-5495c8713847434986ef03ad09158bf1 ⧉ | 20 |
| ALN021: Foreign keys must use models, not string. See this Notion page : https://www.notion.so/alaninsurance/Imports-5495c8713847434986ef03ad09158bf1 ⧉ | 64 |
| ALN027: This class checks that no protected attribute access is used. | 8 |
| ALN037: @property are not serialized by dataclass_json. If not a problem for your use case, please ignore (# noqa: ALN037). "See this Notion page: https://www.notion.so/alaninsurance/Dataclass-the-good-parts-8f387ec2a8e24a55af294237b97dc210#a611a9154af448a38e552c61415169df ⧉ | 3 |
| ALN051: Check that we use isodate_field(), optional_isodate_field(), isodatetime_field() and optional_isodatetime_field() in json dataclasses for es/be/ca apps | 46 |
ALN072: Functions decorated with @enqueueable should not use non-primitive type arguments. The function is used by RQ and the arguments must be serializable and robust for code moves/refactors. |
2 |
| ALN073: Don't call functions without assigning their return value to a variable. | 1 |
| ALN077: Check for usage of backref in SQLAlchemy relationships and suggest using back_populates instead. | 24 |
| ALN079: Check for direct instantiation of AlanBaseFactory or its derived classes. Always use the .create() class method instead of direct instantiation. | 25 |
| ALN080: The Model.query.get(...) method is considered legacy as of the 1.x series of SQLAlchemy and will be removed. Use " current_session.get(Model, ...) instead. | 6 |
| ALN085: Enforces SQLAlchemy 2.0 query style by detecting deprecated patterns that will be removed in SQLAlchemy 2.0. This linter checks for: 1. Usage of session.query() which is deprecated in favor of session.scalar(), session.scalars(), or session.execute() Note: Other SQLAlchemy 2.0 deprecation warnings are already being turned into errors at runtime by the _turn_sql_alchemy_warning_into_errors function in backend/shared/models/orm/sqlalchemy.py. | 506 |
| ALN089: pytest fixtures with autouse=True in conftest.py files can have unwanted side-effects as they will be used in any tests in the subfolders and can inadvertently use other fixtures that add functionality. Instead, mark tests that need the fixture explicitly with @pytest.mark.usefixtures("fixture_name") or use the fixture as a parameter. | 1 |
Listing of files of the most critical ALN**¶
ALN069 occurs 55 times¶
| File:line | Content |
|---|---|
| components/es/external/fr_renewal_models.py:1 ⧉ | from components.contracting.subcomponents.renewal.internal.models.deprecated.account_renewal_campaign import ( # noqa: F401, ALN069 |
| components/es/external/fr_renewal_models.py:4 ⧉ | from components.contracting.subcomponents.renewal.internal.models.deprecated.indiv_renewal_campaign import ( # noqa: F401, ALN069 |
| components/es/external/fr_renewal_models.py:7 ⧉ | from components.contracting.subcomponents.renewal.internal.models.deprecated.renewal_specs import ( # noqa: F401, ALN069 |
| components/es/external/fr_renewal_models.py:10 ⧉ | from components.contracting.subcomponents.renewal.internal.models.renewal_campaign_configuration import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:11 ⧉ | from components.contracting.subcomponents.proposal.internals.models.approval_request import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:15 ⧉ | from components.contracting.subcomponents.proposal.internals.models.manual_document import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:18 ⧉ | from components.contracting.subcomponents.proposal.internals.models.previewed_document import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:21 ⧉ | from components.contracting.subcomponents.proposal.internals.models.proposal import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:27 ⧉ | from components.contracting.subcomponents.proposal.internals.models.proposal_error import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:30 ⧉ | from components.contracting.subcomponents.proposal.internals.models.proposal_item import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:33 ⧉ | from components.contracting.subcomponents.proposal.internals.models.proposal_item_target import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:36 ⧉ | from components.contracting.subcomponents.proposal.internals.models.proposal_item_template import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:40 ⧉ | from components.contracting.subcomponents.proposal.internals.models.signed_bundle import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:43 ⧉ | from components.contracting.subcomponents.proposal.internals.models.signed_document import ( # noqa: F401, ALN069 |
| components/es/external/fr_proposal_models.py:46 ⧉ | from components.contracting.subcomponents.proposal.internals.models.target_origin_proposal import ( # noqa: F401, ALN069 |
| components/es/external/contracting/models.py:5 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.contract_option import ( # noqa: ALN069 |
| components/es/external/contracting/models.py:8 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.es_amendment import ( # noqa: ALN069 |
| components/es/external/contracting/models.py:12 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.es_signed_bundle import ( # noqa: ALN069 |
| components/es/external/contracting/models.py:15 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.es_signed_document import ( # noqa: ALN069 |
| components/es/external/contracting/models.py:18 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.health_contract import ( # noqa: ALN069 |
| components/es/external/contracting/models.py:24 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.health_contract_version import ( # noqa: ALN069 |
| components/es/external/contracting/enums.py:1 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.enums.add_on_type import ( # noqa: ALN069 |
| components/es/external/contracting/enums.py:5 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.enums.option_type import ( # noqa: ALN069 |
| components/es/external/contracting/enums.py:9 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.enums.product_type import ( # noqa: ALN069 |
| components/es/external/contracting/enums.py:13 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.enums.service_configuration import ( # noqa: ALN069 |
| components/es/external/contracting/enums.py:17 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.enums.signed_document_type import ( # noqa: ALN069 |
| components/es/subcomponents/healthy_benefits/internal/business_logic/authorizations/helpers.py:90 ⧉ | from components.payment_gateway.subcomponents.authorizations.models.brokers.expense_category import ( # noqa: ALN069 # Only used in dev/test |
| components/es/subcomponents/healthy_benefits/internal/business_logic/authorizations/helpers.py:109 ⧉ | from components.payment_gateway.subcomponents.authorizations.models.brokers.expense_category import ( # noqa: ALN069 # Only used in dev/test |
| components/es/subcomponents/healthy_benefits/internal/business_logic/authorizations/helpers.py:112 ⧉ | from components.payment_gateway.subcomponents.authorizations.models.brokers.expense_tracker import ( # noqa: ALN069 # Only used in dev/test |
| components/es/subcomponents/healthy_benefits/internal/business_logic/authorizations/helpers.py:115 ⧉ | from components.payment_gateway.subcomponents.authorizations.models.brokers.line_of_credit import ( # noqa: ALN069 # Only used in dev/test |
| components/es/subcomponents/billing/internal/business_logic/queries/stripe_sepa_debit_migration.py:7 ⧉ | from components.contracting.subcomponents.subscription.internal.models.subscription import ( # noqa: ALN069 |
| components/es/public/employment/tests/test_es_employment_component_integration.py:5 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.enums.product_type import ( # noqa: ALN039, ALN069 # this should really be public somewhere |
| components/es/internal/auth/tests/factories.py:1 ⧉ | from components.global_services.internal.models.feature_flag import ( # noqa: ALN043,ALN069 |
| components/es/internal/auth/tests/factories.py:4 ⧉ | from components.global_services.internal.models.tests.factories import ( # noqa: ALN043,ALN069 |
| components/es/internal/commands/contract_option.py:97 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.contract_option import ( # noqa: ALN069 |
| components/es/internal/data_consistency/commands/profile.py:17 ⧉ | from components.global_profile.internal.models.profile import ( # noqa: ALN069 |
| components/es/internal/data_consistency/entities/factories/data_inconsistency.py:24 ⧉ | from components.global_profile.internal.models.profile import ( # noqa: ALN069 for typing only |
| components/es/internal/controllers/global_customer_dashboard/tests/test_admin.py:34 ⧉ | from components.onboarding.internal.models.tests.factories.factories import ( # noqa:ALN069 |
| components/es/internal/business_logic/profile/tests/test_repositoryV2.py:14 ⧉ | from components.global_profile.internal.models.profile import ( # noqa: ALN069 |
| components/es/internal/business_logic/employment/actions/tests/features/steps/employee_update.py:8 ⧉ | from components.employment.internal.models.tests.factories import ( # noqa: ALN069 |
| components/es/internal/business_logic/employment/actions/tests/features/steps/employee_termination.py:6 ⧉ | from components.employment.internal.models.tests.factories import ( # noqa: ALN069 # TODO @matthieu.stombellini should probably be public (or have a nicer API) |
| components/es/internal/business_logic/employment/global_employment/tests/test_on_employment_change.py:7 ⧉ | from components.employment.internal.models.tests.factories import ( # noqa: ALN069 # TODO @matthieu.stombellini should probably be public (or have a nicer API) |
| components/es/internal/business_logic/user_v2/tests/test_service.py:10 ⧉ | from components.be.internal.models.tests.factories import ( # noqa: ALN069 # for testing purposes |
| components/es/internal/business_logic/tests/test_outgoing_payment.py:19 ⧉ | from components.iban.public.models.tests.factories import ( # noqa: ALN069 |
| components/es/internal/models/es_company.py:46 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.es_amendment import ( # noqa: ALN069 |
| components/es/internal/models/es_company.py:53 ⧉ | from components.es.internal.models.es_company_admin import ( # noqa: ALN069 |
| components/es/internal/models/es_user.py:17 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.es_amendment import ( # noqa: ALN069 |
| components/es/internal/models/es_user.py:20 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.health_contract import ( # noqa: ALN069 |
| components/es/internal/customer_health_partner/tests/test_commands.py:9 ⧉ | from components.customer_health_partner.wellbeing_assessment.internal.models.tests.factories import ( # - tests # noqa: ALN069 |
| components/es/bootstrap/dependencies/gamification.py:63 ⧉ | from components.es.internal.models.es_user import EsUser # noqa: ALN069 |
| components/es/bootstrap/dependencies/gamification.py:74 ⧉ | from components.es.internal.models.es_user import EsUser # noqa: ALN069 |
| components/es/bootstrap/dependencies/gamification.py:83 ⧉ | get_company_ids_of_account, # noqa: ALN069, ALN043 |
| components/es/bootstrap/dependencies/gamification.py:86 ⧉ | EsEmployment, # noqa: ALN069 |
| components/es/bootstrap/dependencies/gamification.py:88 ⧉ | from components.es.internal.models.es_user import EsUser # noqa: ALN069 |
| components/es/bootstrap/dependencies/gamification.py:132 ⧉ | from components.gamification.internal.models.player import ( # noqa: ALN069 |
ALN043 occurs 30 times¶
| File:line | Content |
|---|---|
| components/es/external/fr_proposal_models.py:1 ⧉ | from components.contracting.subcomponents.proposal.api.entities.proposal_origin import ( # noqa: F401, ALN043 |
| components/es/external/fr_proposal_models.py:4 ⧉ | from components.contracting.subcomponents.proposal.api.entities.subscriptor import ( # noqa: F401, ALN043 |
| components/es/external/fr_proposal_models.py:7 ⧉ | from components.contracting.subcomponents.proposal.api.entities.target_origin_proposal import ( # noqa: F401, ALN043 |
| components/es/external/contracting/business_logic.py:1 ⧉ | from components.contracting.subcomponents.subscription.internal.es.business_logic import ( # noqa: ALN043 |
| components/es/external/contracting/business_logic.py:4 ⧉ | from components.contracting.subcomponents.subscription.internal.es.business_logic.amendment import ( # noqa: ALN043 |
| components/es/external/contracting/business_logic.py:8 ⧉ | from components.contracting.subcomponents.subscription.internal.es.business_logic.migrate_amendment import ( # noqa: ALN043 |
| components/es/external/contracting/business_logic.py:12 ⧉ | from components.contracting.subcomponents.subscription.internal.es.business_logic.subscription import ( # noqa: ALN043 |
| components/es/external/contracting/business_logic.py:15 ⧉ | from components.contracting.subcomponents.subscription.internal.es.business_logic.subscription_query import ( # noqa: ALN043 |
| components/es/external/contracting/entities.py:1 ⧉ | from components.contracting.subcomponents.subscription.internal.es.constants.waiting_periods import ( # noqa: ALN043 |
| components/es/external/contracting/entities.py:6 ⧉ | from components.contracting.subcomponents.subscription.internal.es.entities.amendment import ( # noqa: ALN043 |
| components/es/external/contracting/entities.py:11 ⧉ | from components.contracting.subcomponents.subscription.internal.es.entities.contract import ( # noqa: ALN043 |
| components/es/external/contracting/entities.py:17 ⧉ | from components.contracting.subcomponents.subscription.internal.es.entities.health_contract_option import ( # noqa: ALN043 |
| components/es/external/contracting/entities.py:20 ⧉ | from components.contracting.subcomponents.subscription.internal.es.entities.subscription import ( # noqa: ALN043 |
| components/es/external/contracting/entities.py:34 ⧉ | from components.contracting.subcomponents.subscription.internal.es.entities.subscriptor import ( # noqa: ALN043 |
| components/es/subcomponents/healthy_benefits/internal/business_logic/tests/features/steps/bank_transfer.py:17 ⧉ | from components.payment_gateway.subcomponents.transfers.business_logic.policies.bank_transfer_processor import ( # noqa: ALN043 |
| components/es/subcomponents/healthy_benefits/internal/business_logic/tests/features/steps/account_transfer.py:17 ⧉ | from components.payment_gateway.subcomponents.transfers.business_logic.policies.account_transfer_processor import ( # noqa: ALN043 |
| components/es/internal/auth/tests/factories.py:1 ⧉ | from components.global_services.internal.models.feature_flag import ( # noqa: ALN043,ALN069 |
| components/es/internal/auth/tests/factories.py:4 ⧉ | from components.global_services.internal.models.tests.factories import ( # noqa: ALN043,ALN069 |
| components/es/internal/business_logic/contracts_management/legal_documents/helpers/particular_conditions_templating.py:38 ⧉ | from components.contracting.subcomponents.proposal.plugins.health_amendment_es.settings import ( # noqa: ALN043 |
| components/es/internal/business_logic/profile/repository.py:12 ⧉ | from components.global_profile.internal.domain.entities import Profile # noqa: ALN043 |
| components/es/internal/business_logic/profile/repository.py:13 ⧉ | from components.global_profile.internal.domain.events import DomainEvent # noqa: ALN043 |
| components/es/internal/business_logic/profile/repository.py:14 ⧉ | from components.global_profile.internal.domain.repository import ( # noqa: ALN043 |
| components/es/internal/business_logic/profile/repository.py:17 ⧉ | from components.global_profile.internal.infrastructure.repository import ( # noqa: ALN043 |
| components/es/internal/business_logic/user_v2/tests/test_service.py:13 ⧉ | from components.ca.internal.tests.factories.factories import ( # noqa: ALN043 # for testing purposes |
| components/es/internal/business_logic/user_v2/tests/test_service.py:36 ⧉ | from components.global_profile.internal.infrastructure.event_dispatcher import ( # noqa: ALN043 for testing purposes |
| components/es/internal/business_logic/user_v2/tests/test_entities.py:12 ⧉ | from components.global_profile.internal.infrastructure.event_dispatcher import ( # noqa: ALN043 for testing purposes |
| components/es/internal/models/tests/factories.py:157 ⧉ | from components.global_profile.internal.infrastructure.repository import ( # noqa: ALN043 |
| components/es/bootstrap/dependencies/gamification.py:28 ⧉ | feature_logic as feature_logic_es, # noqa: ALN043 |
| components/es/bootstrap/dependencies/gamification.py:83 ⧉ | get_company_ids_of_account, # noqa: ALN069, ALN043 |
| components/es/bootstrap/dependencies/tests/test_gamification.py:5 ⧉ | from components.contracting.external.product.es.health_insurance import ( # noqa: ALN043 |
ALN039 occurs 1 times¶
| File:line | Content |
|---|---|
| components/es/public/employment/tests/test_es_employment_component_integration.py:5 ⧉ | from components.contracting.subcomponents.subscription.internal.es.models.enums.product_type import ( # noqa: ALN039, ALN069 # this should really be public somewhere |
ALN014 occurs 1 times¶
| File:line | Content |
|---|---|
| components/es/internal/helpers/tests/base_test_app.py:93 ⧉ | from shared.blueprints.content.blueprint import ( # noqa: ALN014 |