Skip to content

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

ALN045 occurs 28 times

File:line Content
components/es/subcomponents/payroll/internal/models/es_pay_csv.py:46 ⧉ f"Cambios_Alan_{self.health_contract.company.name}_{self.month}.csv" # type: ignore[union-attr] # noqa: ALN045
components/es/subcomponents/billing/internal/business_logic/rules/stripe_bank_transfer_reconciliation.py:38 ⧉ .filter( # noqa: ALN045
components/es/internal/services/tracking/policy_traits.py:34 ⧉ company: EsCompany | None = policy.health_contract.company # noqa: ALN045
components/es/internal/data_consistency/commands/user.py:121 ⧉ .joinedload(EsPolicy.health_contract), # noqa: ALN045
components/es/internal/data_consistency/commands/policy.py:84 ⧉ joinedload(EsPolicy.health_contract) # noqa: ALN045
components/es/internal/data_consistency/commands/policy.py:103 ⧉ and policy.health_contract.end_date is not None # noqa: ALN045
components/es/internal/data_consistency/commands/policy.py:104 ⧉ and policy.end_date > policy.health_contract.end_date # noqa: ALN045
components/es/internal/data_consistency/commands/health_contract.py:118 ⧉ health_contracts = current_session.query(EsHealthContract).options( # noqa: ALN045,ALN085
components/es/internal/data_consistency/commands/health_contract.py:144 ⧉ .options( # noqa: ALN045
components/es/internal/data_consistency/commands/health_contract.py:148 ⧉ ) # noqa: ALN045
components/es/internal/data_consistency/commands/health_contract.py:170 ⧉ and not health_contract_version.health_contract.is_cancelled # noqa: ALN045
components/es/internal/data_consistency/entities/factories/data_inconsistency.py:53 ⧉ health_contract_version.health_contract.company # noqa: ALN045
components/es/internal/data_consistency/entities/factories/data_inconsistency.py:55 ⧉ if health_contract_version.health_contract.company # noqa: ALN045
components/es/internal/data_consistency/entities/factories/data_inconsistency.py:57 ⧉ health_contract_version.health_contract.user # type: ignore[arg-type] # noqa: ALN045
components/es/internal/data_consistency/entities/factories/data_inconsistency.py:87 ⧉ health_contract: EsHealthContract = policy.health_contract # noqa: ALN045
components/es/internal/controllers/pay_csv.py:27 ⧉ contract = current_session.get(EsHealthContract, pay_csv.health_contract_id) # type: ignore[union-attr] # noqa: ALN045
components/es/internal/business_logic/contract_option.py:41 ⧉ contract_option.health_contract.company.display_name # type: ignore[union-attr] # noqa: ALN045
components/es/internal/business_logic/dependent.py:643 ⧉ EsPolicy.health_contract # noqa: ALN045
components/es/internal/business_logic/health_contract_lifecycle.py:156 ⧉ .options(joinedload(EsHealthContract.options)) # noqa: ALN045
components/es/internal/business_logic/enrollment/enrollment_query.py:88 ⧉ .joinedload(EsPolicy.health_contract) # noqa: ALN045
components/es/internal/business_logic/enrollment/enrollment_query.py:201 ⧉ .join(EsPolicy.health_contract) # noqa: ALN045
components/es/internal/business_logic/enrollment/enrollment_query.py:210 ⧉ .join(EsPolicy.health_contract) # noqa: ALN045
components/es/internal/business_logic/enrollment/actions/enroll.py:212 ⧉ health_contract = policy.health_contract # noqa: ALN045
components/es/internal/business_logic/enrollment/queries/enrollment.py:377 ⧉ EsPolicy.health_contract # noqa: ALN045
components/es/internal/business_logic/enrollment/dkv/dkv_enrollment_monitor.py:249 ⧉ joinedload(EsPolicy.health_contract).options( # noqa: ALN045
components/es/internal/business_logic/employment/queries/employment.py:275 ⧉ .joinedload(EsPolicy.health_contract), # noqa: ALN045
components/es/internal/business_logic/pay_csv/health_insurance_pay_csv_rows.py:274 ⧉ .joinedload(EsPolicy.health_contract) # noqa: ALN045
components/es/internal/models/brokers/enrollments.py:32 ⧉ .joinedload(EsPolicy.health_contract) # noqa: ALN045