<commit_before># !/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import csv
import sys
import math
from dateutil.parser import parse
from collections import defaultdict

csv_modif = csv.reader(open(sys.argv[1]))
header = next(csv_modif)
csv_output = csv.writer(open("data/turnover.csv", 'w'))
newheaders = header[1:11] + ["entree", "sortie", "nombredejours"]
csv_output.writerow(newheaders)
collab = defaultdict(dict)

def writecollab(couple):
	parsed_entree = parse(collab[couple]["entree"])
	nbdejours = ""
	if collab[couple]["sortie"] != "":
		parsed_sortie = parse(collab[couple]["sortie"])
		nbdejours = parsed_sortie - parsed_entree
		nbdejours = str(math.floor(nbdejours.total_seconds()/60/60/24))
	newline = collab[couple]["raw_data"] + [collab[couple]["entree"], collab[couple]["sortie"], nbdejours]
	csv_output.writerow(newline)

for modif in csv_modif:
	parlementaire = modif[1]
	collaborateur = modif[5]
	couple = (parlementaire, collaborateur)
	rawdata = modif[1:11]

	if couple not in collab:
		collab[couple]["raw_data"] = rawdata
		collab[couple]["entree"] = ""
		collab[couple]["sortie"] = ""

	if modif[0] == "AJOUT":
		if collab[couple]["entree"] != "":
			print("ERROR: Réembauche d'un collab déjà en poste")
			print(modif)
		collab[couple]["entree"] = modif[12]

	elif modif[0] == "SUPPRESSION":
		if collab[couple]["sortie"] != "":
			print("ERROR: Fin d'un contrat jamais commencé")
			print(modif)
		if collab[couple]["entree"] == "":
			print("ERROR: Collaborateur embauché à la législature précédente")
			print(modif)
			collab[couple]["entree"] = "2017-06-21 00:00:00 +0200"
		collab[couple]["sortie"] = modif[12]

		# À chaque fin de contrat, l'information est versée dans un .csv de façon à s'assurer que 
		# les données ne soient pas écrasée en cas de réembauche du collab par le même parlementaire
		writecollab(couple)
		collab.pop(couple, None)

for couple in collab:
	writecollab(couple)


<commit_msg>Gère les cas de contrat microcoupé<commit_after># !/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import csv
import sys
import math
from dateutil.parser import parse
from collections import defaultdict

csv_modif = csv.reader(open(sys.argv[1]))
header = next(csv_modif)
csv_output = csv.writer(open("data/turnover.csv", 'w'))
newheaders = header[1:11] + ["entree", "sortie", "nombredejours"]
csv_output.writerow(newheaders)
collab = defaultdict(dict)

def writecollab(unecollab):
	parsed_entree = parse(unecollab["entree"])
	nbdejours = ""
	if unecollab["sortie"] != "":
		parsed_sortie = parse(unecollab["sortie"])
		nbdejours = parsed_sortie - parsed_entree
		nbdejours = str(math.floor(nbdejours.total_seconds()/60/60/24))
	newline = unecollab["raw_data"] + [unecollab["entree"], unecollab["sortie"], nbdejours]
	csv_output.writerow(newline)

couple_contrats = defaultdict(list)

def validcollab(couple):
	couple_contrats[couple].append(collab[couple])


for modif in csv_modif:
	parlementaire = modif[1]
	collaborateur = modif[5]
	couple = (parlementaire, collaborateur)
	rawdata = modif[1:11]

	if couple not in collab:
		collab[couple]["raw_data"] = rawdata
		collab[couple]["entree"] = ""
		collab[couple]["sortie"] = ""

	if modif[0] == "AJOUT":
		if collab[couple]["entree"] != "":
			print("ERROR: Réembauche d'un collab déjà en poste")
			print(modif)
		collab[couple]["entree"] = modif[12]

	elif modif[0] == "SUPPRESSION":
		if collab[couple]["sortie"] != "":
			print("ERROR: Fin d'un contrat jamais commencé")
			print(modif)
		if collab[couple]["entree"] == "":
			print("ERROR: Collaborateur embauché à la législature précédente")
			print(modif)
			collab[couple]["entree"] = "2017-06-21 00:00:00 +0200"
		collab[couple]["sortie"] = modif[12]

		# À chaque fin de contrat, l'information est versée dans un .csv de façon à s'assurer que 
		# les données ne soient pas écrasée en cas de réembauche du collab par le même parlementaire
		validcollab(couple)
		collab.pop(couple, None)

for couple in collab:
	validcollab(couple)

for couple in couple_contrats:
	if len(couple_contrats[couple]) > 1:
		for i  in range(len(couple_contrats[couple]) - 1, 0, -1):
			datediff = parse(couple_contrats[couple][i]["entree"]) - parse(couple_contrats[couple][i-1]["sortie"])
			if (datediff.total_seconds()/60/60/24 < 7):
				print (parse(couple_contrats[couple][i]["entree"]))
				print (parse(couple_contrats[couple][i-1]["sortie"]))
				print ("merged !!")

				couple_contrats[couple][i-1]["sortie"] = couple_contrats[couple][i]["sortie"]
				couple_contrats[couple][i]["deleted"] = True
for couple in couple_contrats:
	for collaboration in couple_contrats[couple]:
		if "deleted" not in collaboration:
			writecollab(collaboration)

{'fraction_non_alphanumeric': 0.1522572402044293, 'fraction_numerical': 0.02001703577512777, 'mean_word_length': 5.478620689655172, 'pattern_counts': {'":': 12, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3273260', 'n_tokens_mistral': 1938, 'n_tokens_neox': 1815, 'n_words': 376}