# -*- coding:utf-8 -*-

__projet__ = "Colle_session_1_2025-05-12"
__nom_fichier__ = "identite"
__author__ = "Christine Fay-Varnier"
__date__ = "mai 2025"

"""
En France, chaque personne est identifiée par son numéro INSEE. Ce numéro contient treize chiffres (exemple : "265081416802533"), construit de la façon suivante : 
•	Code sexe ("1" = homme, "2" = femme) 
•	Année naissance (2 derniers chiffres du millésime : 1980  "80") 
•	Mois naissance (sur 2 chiffres : janvier="01", décembre="12") 
•	Code département naissance (sur 2 chiffres, exemple "75" pour Paris, "99" pour l'étranger, pour la Corse, les lettres A et B seront remplacées par des zéros) 
•	Code commune + ordre de naissance (sur 6 chiffres) 

"""


class INSEE:
    def __init__(self, sexe, annee, mois, dep, code):
        self.sexe_ = sexe
        self.annee_ = annee
        self.mois_ = mois
        self.dep_ = dep
        self.code_ = code

    def __str__(self):
        return self.sexe_ + self.annee_ + self.mois_ + self.dep_ + self.code_

    def get_mois(self):
        """

        @return: accesseur de l'attribut mois_
        """
        return self.mois_

    def get_annee(self):
        """

        @return: accesseur de l'attribut annee_
        """
        return self.annee_

    def __eq__(self, other):
        """

        @param other:   autre numéro Insee
        @return:        True si l’année de naissance et le mois de naissance
                        sont identiques pour les deux numéros insee
        """

        return self.annee_==other.annee_ and self.mois_==other.mois_

def anniv_du_mois(liste_Insee, mois):
    """

    @param liste_Insee: liste de numéros Insee
    @param mois:        numéro de mois
    @return:            la liste des numéros dont le mois de naissance correspond au mois passé en paramètre
    """
    liste_filtree = []
    for numinsee in liste_Insee:
        if numinsee.get_mois() == mois:
            liste_filtree.append(numinsee)

    return liste_filtree

if __name__ == '__main__':
    num = INSEE("2", "71", "12", "08", "105048")
    print(num)

    numerobis = INSEE("2", "71", "12", "08", "105048")

    numeroter = INSEE("2", "61", "11", "08", "105048")
    print(num == numeroter)

    numeroquatre = INSEE("2", "65", "12", "08", "105048")
    print(num == numeroter)

    listenum = [num, numerobis, numeroter, numeroquatre]
    liste_filtree = anniv_du_mois(listenum, "12")
    for num in liste_filtree:
        print(num)