Example #1
0
 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@')
Example #2
0
 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))
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
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))
Example #6
0
    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())
Example #7
0
    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())
Example #8
0
 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)
Example #9
0
    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'
Example #10
0
    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'
Example #11
0
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)
Example #12
0
 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 == []
Example #13
0
 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))
Example #14
0
    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'
Example #15
0
    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
Example #16
0
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
Example #17
0
    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())
Example #18
0
    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))
Example #19
0
    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())
Example #20
0
 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)
Example #21
0
    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])
Example #22
0
    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")
Example #23
0
	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)
Example #24
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))
Example #25
0
 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]
Example #26
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
Example #27
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)
Example #28
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
Example #29
0
    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@.'
            ])
Example #30
0
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)