def setUp(self): self.fam1 = Family() self.fam1.addFamID('@F2@') self.fam1.addHusb('@I1@') self.fam1.addWife('@I2@') self.fam1.addChil('@I4@') self.fam1.addChil('@I5@') self.fam1.addMarr('5 OCT 1999') self.fam1.addDiv('12 JUN 2012') self.fam2 = Family() self.fam2.addFamID('@F3@') self.fam2.addHusb('@I3@') self.fam2.addWife('@I3@')
def test_marriedToSiblings(self): self.famA = Family() self.famA.addFamID('@F6@') self.famA.addHusb('@I6@') self.famA.addWife('@I7@') self.famA.addMarr('5 OCT 1999') self.assertTrue(marriedToSiblings(self.famA, self.individuals)) self.famB = Family() self.famB.addFamID('@F6@') self.famB.addHusb('@I6@') self.famB.addWife('@I8@') self.famB.addMarr('5 OCT 1999') self.assertFalse(marriedToSiblings(self.famB, self.individuals))
def __set_suite_cursors__(self, suite): self.traits = StatementCursor(self.conn, 'traits') self.traits.set_table(ujoin(suite, 'traits')) self.traitparent = TraitParent(self.conn, suite) self.traitpackage = TraitPackage(self.conn, suite) self.traittemplate = TraitTemplate(self.conn, suite) self.family = Family(self.conn)
def __init__(self, conn): self.conn = conn self.suitecursor = SuiteCursor(self.conn) self.aptsrc = AptSourceHandler(self.conn) self.main_path = None self.profile = Profile(self.conn) self.family = Family(self.conn)
def main(): family = Family([ Person('Trillian', date(1970, 3, 14)), Person('Arthur', date(1965, 7, 4)), Person('Ford', date(1995, 2, 2)), Person('Zaphod', date(1997, 5, 1)), Person('Douglas', date(1999, 4, 2)) ]) singles = [ Person('Marvin', date(1991, 1, 1)), Person('Slarti', date(1993, 9, 9)) ] oldest = None earliest_date = date.max for m in family: if m.birthdate < earliest_date: oldest = m earliest_date = m.birthdate for s in singles: if s.birthdate < earliest_date: oldest = s earliest_date = s.birthdate max_age = (date.today() - earliest_date).days / 365.2425 print('Oldest person: {}; Age: {:6.2f}'.format(oldest.name, max_age))
def test_married_date(self): """add married date 28 MAR 2001 """ married_date = datetime.strptime("28 MAR 2001", '%d %b %Y') fam = Family("@F01@") fam.set_date("28 MAR 2001", "married") self.assertEqual(married_date, fam.get_married_date())
def test_divorced_date(self): """add divorced date 1 APR 1970 """ divorced_date = datetime.strptime("1 APR 1970", '%d %b %Y') fam = Family("@F09@") fam.set_date("1 APR 1970", "divorced") self.assertEqual(divorced_date, fam.get_divorced_date())
def __init__(self, conn): StatementCursor.__init__(self, conn) self.conn = conn self.set_table('profiles') self._traits = ProfileTrait(conn) self._env = ProfileEnvironment(conn) self._pfam = StatementCursor(conn) self._pfam.set_table('profile_family') self._fam = Family(conn)
def test_add_daughter(self): husband = Person('Evan', 'Male') wife = Person('Diana', 'Female') family = Family(husband, wife) daughter_name = 'Nisha' family.add_daughter(daughter_name) assert family.children[0].name == 'Nisha' assert family.children[0].gender == 'Female'
def test_add_son(self): husband = Person('Evan', 'Male') wife = Person('Diana', 'Female') family = Family(husband, wife) son_name = 'Alex' family.add_son(son_name) assert family.children[0].name == 'Alex' assert family.children[0].gender == 'Male'
def print_family(): from family import Family fam1 = Family('Chaz Davis', '650 Sherard Circle', 'Lexington', 'Ky', '40517', '35', '859-699-8820') fam2 = Family('Charlie Davis', '650 Sherard Circle', 'Lexington', 'Ky', '40517', '66', '859-699-8346') fam3 = Family('Chris O\'Callaghan', '1760 Sandhurst Cv', 'Lexington', 'Ky', '40509', '34', '859-619-6238') print('Myself: ') print(fam1) print() print('My Father: ') print(fam2) print() print('My Best Friend: ') print(fam3)
def test_family_init(self): husband = Person('Evan', 'Male') wife = Person('Diana', 'Female') family = Family(husband, wife) assert family.husband.name == 'Evan' assert family.husband.gender == 'Male' assert family.wife.name == 'Diana' assert family.wife.gender == 'Female' assert family.children == []
def test_tooManyChildren(self): self.assertFalse(tooManyChildren(self.fam1)) famT = Family() self.assertFalse(tooManyChildren(famT)) famT.addChil("1") famT.addChil("2") famT.addChil("3") famT.addChil("4") famT.addChil("5") self.assertTrue(tooManyChildren(famT))
def test_find_person(self): familytree = FamilyTree('Diana', 'Female') husband = Person('Evan', 'Male') family = Family(husband, familytree.root_person) familytree.list_of_families.append(family) familytree.list_of_families[0].add_daughter('Nisha') familytree.list_of_families[0].add_son('Joe') actual_person = familytree.find_person('Joe') assert actual_person.name == 'Joe'
def test_get_sisters(self): husband = Person('Evan', 'Male') wife = Person('Diana', 'Female') family = Family(husband, wife) family.add_son('John') family.add_son('Alex') family.add_son('Joe') family.add_daughter('Nisha') list_of_sisters = family.get_sisters('Joe') assert 'Nisha' in list_of_sisters assert 'Alex' not in list_of_sisters
def createClass(part2, part3, individuals, families): if part3 == "INDI": tempID = int(re.sub(r'@+|I+', "", part2)) individuals[tempID] = Individual() individuals[tempID].addID(part2) return individuals[tempID] elif part3 == "FAM": tempFamID = int(re.sub(r'@+|F+', "", part2)) families[tempFamID] = Family() families[tempFamID].addFamID(part2) return families[tempFamID] else: return None
def test_both_dates(self): """add both dates together """ fam = Family("@F01@") married_date = datetime.strptime("28 MAR 2001", '%d %b %Y') fam.set_date("28 MAR 2001", "married") divorced_date = datetime.strptime("1 APR 1970", '%d %b %Y') fam.set_date("1 APR 1970", "divorced") self.assertEqual(married_date, fam.get_married_date()) self.assertEqual(divorced_date, fam.get_divorced_date())
def test_marriedMoreThanOnePerson(self): self.families = dict() self.famA = Family() self.famA.addFamID('@A1@') self.famA.addHusb('@H1@') self.famA.addWife('@W1@') self.families['1'] = self.famA self.assertFalse(marriedMoreThanOnePerson(self.families)) self.famB = Family() self.famB.addFamID('@B1@') self.famB.addHusb('@H2@') self.famB.addWife('@W2@') self.families['2'] = self.famB self.assertFalse(marriedMoreThanOnePerson(self.families)) self.famB.addWife('@W1@') self.assertTrue(marriedMoreThanOnePerson(self.families)) self.famA.addDiv('12 JUN 2012') self.famB.addWife('@W1@') self.assertFalse(marriedMoreThanOnePerson(self.families))
def test_default_data(self): """default init data, wife and husband ids """ fam_id = "@F01@" husband_id = "@I01@" wife_id = "@I02" fam = Family(fam_id) fam.set_husband_id(husband_id) fam.set_wife_id(wife_id) self.assertEqual(fam_id, fam.get_family_id()) self.assertEqual(husband_id, fam.get_husband_id()) self.assertEqual(wife_id, fam.get_wife_id())
def connect(self): idn = self.env.generate_idn('family') h = input("Enter head id:\n") p = input("Enter partner id:\n") r = input("Enter relation name:\n") entries = self.env.entries() h_d = entries[h].depth p_d = entries[p].depth if h_d > p_d: entries[p].depth = h_d elif p_d > h_d: entries[h].depth = p_d entries[idn] = Family(idn, h, p, r) entries[h].add(idn) entries[p].add(idn)
def test_add_children(self): """test adding children """ fam = Family("@F11@") child_id_1 = "@I08@" fam.add_child(child_id_1) self.assertEqual(1, len(fam.get_children())) self.assertEqual(child_id_1, fam.get_children()[0]) child_id_2 = "@I09@" fam.add_child(child_id_2) self.assertEqual(2, len(fam.get_children())) self.assertEqual(child_id_2, fam.get_children()[1])
def process_line_data(self, data): """line data is a dict of the format: { "level": int, "tag": string, "args": string, "valid": "Y" or "N" } """ if data["valid"] == "N": raise ValueError if data["level"] < 2: self._current_level_1 = None if data["tag"] == "FAM": self._curr_family = Family(data["args"]) # US22 if data["args"] in self.families: self._msgs.add_message(self.CLASS_IDENTIFIER, "US22", data["args"], "NA", "Not unique family ID " + data["args"] + " ") self.families[data["args"]] = self._curr_family if data["tag"] == "MARR": self._current_level_1 = "MARR" if data["tag"] == "DIV": self._current_level_1 = "DIV" if data["tag"] == "HUSB": self._curr_family.set_husband_id(data["args"]) self._current_level_1 = "HUSB" if data["tag"] == "WIFE": self._curr_family.set_wife_id(data["args"]) self._current_level_1 = "WIFE" if data["tag"] == "CHIL": self._curr_family.add_child(data["args"]) self._current_level_1 = "CHIL" if data["tag"] == "DATE": if self._current_level_1 == "MARR": self._curr_family.set_date(data["args"], "married") if self._current_level_1 == "DIV": self._curr_family.set_date(data["args"], "divorced")
def runCapTests(self): f1 = Family(None) with open("data.csv", "w", newline="") as csvFile: writer = csv.writer(csvFile) writer.writerow(["Cap"]) for i in range(10000): f1.generatePerson(None, age=80, gender="male") f1.generatePerson(None, age=80, gender="female") val1 = f1.getPerson(0).calculateCap(f1.getPerson(1)) val2 = f1.getPerson(1).calculateCap(f1.getPerson(0)) writer.writerow([val1]) writer.writerow([val2]) f1.removePersonByIndex(1) f1.removePersonByIndex(0)
def __init__(self, conn, path='/'): Element.__init__(self, 'paelladatabase') self.conn = conn self.stmt = StatementCursor(self.conn) self._profile_traits_ = ProfileTrait(self.conn) self.path = path self.suites = SuitesElement() self.appendChild(self.suites) for row in self._suite_rows(): args = map(str, [row.suite, row.nonus, row.updates, row.local, row.common]) element = SuiteElement(*args) self.suites.appendChild(element) self.profiles = PaellaProfiles(self.conn) self.family = Family(self.conn) suites = [x.suite for x in self._suite_rows()] for suite in suites: self.appendChild(TraitsElement(self.conn, suite))
def get(self, family_name): """ return the family object from the family name :param str family_name: the family name :return: object corresponding to family_name :rtype: Family """ present = [f for f in self.families if f.name == family_name] if not present: f = Family(family_name) self.families.append(f) return f else: if len(present) > 1: raise Exception("Multiple families match name") else: return present[0]
def __init__(self, farm_count=100, rng=None): self.activities = activity.Activities() if rng is None: rng = np.random.RandomState() self.rng = rng self.time = 0 self.farms = [] for i in range(farm_count): farm = Farm(eutopia=self, area=100) self.farms.append(farm) self.families = [] for farm in self.farms: family = Family(self) family.add_farm(farm) self.families.append(family) self.govt_cost = 0
def runCapVsRomTests(self): community = Community() f1 = Family() community.addFamily(f1) with open("data.csv", "w", newline="") as csvFile: writer = csv.writer(csvFile) writer.writerow(["Cap", "Rom"]) for i in range(10000): f1.generatePerson(None, age=80, gender="male") f1.generatePerson(None, age=80, gender="female") val1 = f1.getPerson(0).calculateCap(f1.getPerson(1)) val2 = f1.getPerson(1).calculateCap(f1.getPerson(0)) val3 = f1.getPerson(0).calculateRomanticInterest(f1.getPerson(1)) val4 = f1.getPerson(1).calculateRomanticInterest(f1.getPerson(0)) writer.writerow([val1, val3]) writer.writerow([val2, val4]) f1.removePersonByIndex(1) f1.removePersonByIndex(0)
def setUp(self): self.indi = Individual() self.indi.addID('@I2@') self.indi.addName('John Rivas') self.indi.addSex('M') self.indi.addBirt('9 MAY 1978') self.indi.addDeat('12 APR 2013') self.indi.addFams('@F2@') self.indi.addFamc('@F1@') self.fam1 = Family() self.fam1.addFamID('@F2@') self.fam1.addHusb('@I2@') self.fam1.addWife('@I2@') self.fam1.addChil('@I2@') self.fam1.addChil('@I2@') self.individuals = dict() self.individuals["one"] = self.indi self.families = dict() self.families["one"] = self.fam1
def test_US_04(self): file_name = 'US_04_05_06.ged' file_path = os.path.join(current_directory, 'gedcom_test_files', file_name) individuals, families, tag_positions = parse_gedcom( file_path, 'outputs/test_output.txt') family = Family(1) family.divorced = check_and_convert_string_to_date("05 JAN 2005", 0) family.married = check_and_convert_string_to_date("10 JAN 2005", 0) self.assertEqual( marriage_before_divorce({}, {1: family}, {1: { 'DIV': {1}, 'MARR': {2} }}), [ 'ANOMALY: FAMILY: US04, line{1, 2}, Divorced before marriage in family 1.' ]) self.assertEqual( marriage_before_divorce(individuals, families, tag_positions), [ 'ANOMALY: FAMILY: US04, line{33, 35}, Divorced before marriage in family @F1@.' ])
def create_family_list(parsed_output): prev_is_married = False prev_is_divorced = False start_case = False for line in parsed_output: if line[0] == "FAM": if start_case == True: families.append(z) start_case = True line[1] = line[1].replace('@', '') z = Family(line[1]) elif line[0] == "MARR": prev_is_married = True elif line[0] == "DATE" and prev_is_married == True: z.married = line[1] prev_is_married = False elif line[0] == "DIV": prev_is_divorced = True elif line[0] == "DATE" and prev_is_divorced == True: z.divorced = line[1] prev_is_married = False elif line[0] == "HUSB": line[1] = line[1].replace('@', '') z.husbandId = line[1] z.husbandName = person_lookup(line[1]) elif line[0] == "WIFE": line[1] = line[1].replace('@', '') z.wifeId = line[1] z.wifeName = person_lookup(line[1]) elif line[0] == "CHIL": line[1] = line[1].replace('@', '') if len(z.children) > 0: z.children.append(line[1]) else: z.children = [line[1]] families.append(z)