We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
ValueError: day is out of range for month
In GitLab by _thaliatechnicie on Mar 4, 2020, 19:20

Sentry Issue: [CONCREXIT-24](https://sentry.io/organizations/thalia/issues/1538288408/?referrer=gitlab_integration)

```
ValueError: day is out of range for month
(11 additional frame(s) were not displayed)
...
  File "rest_framework/serializers.py", line 260, in data
    self._data = self.to_representation(self.instance)
  File "rest_framework/serializers.py", line 529, in to_representation
    ret[field.field_name] = field.to_representation(attribute)
  File "rest_framework/fields.py", line 1905, in to_representation
    return method(value)
  File "members/api/serializers.py", line 93, in _achievements
    return member_achievements(instance.user)
  File "members/services.py", line 72, in member_achievements
    earliest = earliest.replace(year=earliest.year + mentor_year.year)
```

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `website/members/services.py`
Content:
```
1 """Services defined in the members package."""
2 from datetime import date, datetime
3 from typing import Callable, List, Dict, Any
4 
5 from django.conf import settings
6 from django.db.models import Q, Count
7 from django.utils import timezone
8 from django.utils.translation import gettext
9 
10 from members import emails
11 from members.models import Membership, Member
12 from utils.snippets import datetime_to_lectureyear
13 
14 
15 def _member_group_memberships(
16     member: Member, condition: Callable[[Membership], bool]
17 ) -> Dict[str, Any]:
18     """Determine the group membership of a user based on a condition.
19 
20     :return: Object with group memberships
21     """
22     memberships = member.membergroupmembership_set.all()
23     data = {}
24 
25     for membership in memberships:
26         if not condition(membership):
27             continue
28         period = {
29             "since": membership.since,
30             "until": membership.until,
31             "chair": membership.chair,
32         }
33 
34         if hasattr(membership.group, "board"):
35             period["role"] = membership.role
36 
37         if membership.until is None and hasattr(membership.group, "board"):
38             period["until"] = membership.group.board.until
39 
40         name = membership.group.name
41         if data.get(name):
42             data[name]["periods"].append(period)
43             if data[name]["earliest"] > period["since"]:
44                 data[name]["earliest"] = period["since"]
45             if period["until"] is None or (
46                 data[name]["latest"] is not None
47                 and data[name]["latest"] < period["until"]
48             ):
49                 data[name]["latest"] = period["until"]
50             data[name]["periods"].sort(key=lambda x: x["since"])
51         else:
52             data[name] = {
53                 "pk": membership.group.pk,
54                 "active": membership.group.active,
55                 "name": name,
56                 "periods": [period],
57                 "url": settings.BASE_URL + membership.group.get_absolute_url(),
58                 "earliest": period["since"],
59                 "latest": period["until"],
60             }
61     return data
62 
63 
64 def member_achievements(member) -> List:
65     """Derive a list of achievements of a member.
66 
67     Committee and board memberships + mentorships
68     """
69     achievements = _member_group_memberships(
70         member,
71         lambda membership: (
72             hasattr(membership.group, "board") or hasattr(membership.group, "committee")
73         ),
74     )
75 
76     mentor_years = member.mentorship_set.all()
77     for mentor_year in mentor_years:
78         name = "Mentor in {}".format(mentor_year.year)
79         # Ensure mentorships appear last but are sorted
80         earliest = date.today()
81         earliest = earliest.replace(year=earliest.year + mentor_year.year)
82         if not achievements.get(name):
83             achievements[name] = {
84                 "name": name,
85                 "earliest": earliest,
86             }
87     return sorted(achievements.values(), key=lambda x: x["earliest"])
88 
89 
90 def member_societies(member) -> List:
91     """Derive a list of societies a member was part of."""
92     societies = _member_group_memberships(
93         member, lambda membership: (hasattr(membership.group, "society"))
94     )
95     return sorted(societies.values(), key=lambda x: x["earliest"])
96 
97 
98 def gen_stats_member_type() -> Dict[str, int]:
99     """Generate a dictionary where every key is a member type with the value being the number of current members of that type."""
100     data = {}
101     for key, display in Membership.MEMBERSHIP_TYPES:
102         data[str(display)] = (
103             Membership.objects.filter(since__lte=date.today())
104             .filter(Q(until__isnull=True) | Q(until__gt=date.today()))
105             .filter(type=key)
106             .count()
107         )
108     return data
109 
110 
111 def gen_stats_year() -> Dict[str, Dict[str, int]]:
112     """Generate list with 6 entries, where each entry represents the total amount of Thalia members in a year.
113 
114     The sixth element contains all the multi-year students.
115     """
116     stats_year = {}
117     current_year = datetime_to_lectureyear(date.today())
118 
119     for i in range(5):
120         new = {}
121         for key, _ in Membership.MEMBERSHIP_TYPES:
122             new[key] = (
123                 Membership.objects.filter(user__profile__starting_year=current_year - i)
124                 .filter(since__lte=date.today())
125                 .filter(Q(until__isnull=True) | Q(until__gt=date.today()))
126                 .filter(type=key)
127                 .count()
128             )
129         stats_year[str(current_year - i)] = new
130 
131     # Add multi year members
132     new = {}
133     for key, _ in Membership.MEMBERSHIP_TYPES:
134         new[key] = (
135             Membership.objects.filter(user__profile__starting_year__lt=current_year - 4)
136             .filter(since__lte=date.today())
137             .filter(Q(until__isnull=True) | Q(until__gt=date.today()))
138             .filter(type=key)
139             .count()
140         )
141     stats_year[str(gettext("Older"))] = new
142 
143     return stats_year
144 
145 
146 def verify_email_change(change_request) -> None:
147     """Mark the email change request as verified.
148 
149     :param change_request: the email change request
150     """
151     change_request.verified = True
152     change_request.save()
153 
154     process_email_change(change_request)
155 
156 
157 def confirm_email_change(change_request) -> None:
158     """Mark the email change request as verified.
159 
160     :param change_request: the email change request
161     """
162     change_request.confirmed = True
163     change_request.save()
164 
165     process_email_change(change_request)
166 
167 
168 def process_email_change(change_request) -> None:
169     """Change the user's email address if the request was completed and send the completion email.
170 
171     :param change_request: the email change request
172     """
173     if not change_request.completed:
174         return
175 
176     member = change_request.member
177     member.email = change_request.email
178     member.save()
179 
180     emails.send_email_change_completion_message(change_request)
181 
182 
183 def execute_data_minimisation(dry_run=False, members=None) -> List[Member]:
184     """Clean the profiles of members/users of whom the last membership ended at least 31 days ago.
185 
186     :param dry_run: does not really remove data if True
187     :param members: queryset of members to process, optional
188     :return: list of processed members
189     """
190     if not members:
191         members = Member.objects
192     members = (
193         members.annotate(membership_count=Count("membership"))
194         .exclude(
195             (
196                 Q(membership__until__isnull=True)
197                 | Q(membership__until__gt=timezone.now().date())
198             )
199             & Q(membership_count__gt=0)
200         )
201         .distinct()
202         .prefetch_related("membership_set", "profile")
203     )
204     deletion_period = timezone.now().date() - timezone.timedelta(days=31)
205     processed_members = []
206     for member in members:
207         if (
208             member.latest_membership is None
209             or member.latest_membership.until <= deletion_period
210         ):
211             processed_members.append(member)
212             profile = member.profile
213             profile.student_number = None
214             profile.phone_number = None
215             profile.address_street = "<removed> 1"
216             profile.address_street2 = None
217             profile.address_postal_code = "<removed>"
218             profile.address_city = "<removed>"
219             profile.address_country = "NL"
220             profile.birthday = datetime(1900, 1, 1)
221             profile.emergency_contact_phone_number = None
222             profile.emergency_contact = None
223             member.bank_accounts.all().delete()
224             if not dry_run:
225                 profile.save()
226 
227     return processed_members
228
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/website/members/services.py b/website/members/services.py
--- a/website/members/services.py
+++ b/website/members/services.py
@@ -79,6 +79,9 @@
         # Ensure mentorships appear last but are sorted
         earliest = date.today()
         earliest = earliest.replace(year=earliest.year + mentor_year.year)
+        # Making sure it does not crash in leap years
+        if earliest.month == 2 and earliest.day == 29:
+            earliest = earliest.replace(day=28)
         if not achievements.get(name):
             achievements[name] = {
                 "name": name,

{"golden_diff": "diff --git a/website/members/services.py b/website/members/services.py\n--- a/website/members/services.py\n+++ b/website/members/services.py\n@@ -79,6 +79,9 @@\n         # Ensure mentorships appear last but are sorted\n         earliest = date.today()\n         earliest = earliest.replace(year=earliest.year + mentor_year.year)\n+        # Making sure it does not crash in leap years\n+        if earliest.month == 2 and earliest.day == 29:\n+            earliest = earliest.replace(day=28)\n         if not achievements.get(name):\n             achievements[name] = {\n                 \"name\": name,\n", "issue": "ValueError: day is out of range for month\nIn GitLab by _thaliatechnicie on Mar 4, 2020, 19:20\n\nSentry Issue: [CONCREXIT-24](https://sentry.io/organizations/thalia/issues/1538288408/?referrer=gitlab_integration)\n\n```\nValueError: day is out of range for month\n(11 additional frame(s) were not displayed)\n...\n  File \"rest_framework/serializers.py\", line 260, in data\n    self._data = self.to_representation(self.instance)\n  File \"rest_framework/serializers.py\", line 529, in to_representation\n    ret[field.field_name] = field.to_representation(attribute)\n  File \"rest_framework/fields.py\", line 1905, in to_representation\n    return method(value)\n  File \"members/api/serializers.py\", line 93, in _achievements\n    return member_achievements(instance.user)\n  File \"members/services.py\", line 72, in member_achievements\n    earliest = earliest.replace(year=earliest.year + mentor_year.year)\n```\n", "before_files": [{"content": "\"\"\"Services defined in the members package.\"\"\"\nfrom datetime import date, datetime\nfrom typing import Callable, List, Dict, Any\n\nfrom django.conf import settings\nfrom django.db.models import Q, Count\nfrom django.utils import timezone\nfrom django.utils.translation import gettext\n\nfrom members import emails\nfrom members.models import Membership, Member\nfrom utils.snippets import datetime_to_lectureyear\n\n\ndef _member_group_memberships(\n    member: Member, condition: Callable[[Membership], bool]\n) -> Dict[str, Any]:\n    \"\"\"Determine the group membership of a user based on a condition.\n\n    :return: Object with group memberships\n    \"\"\"\n    memberships = member.membergroupmembership_set.all()\n    data = {}\n\n    for membership in memberships:\n        if not condition(membership):\n            continue\n        period = {\n            \"since\": membership.since,\n            \"until\": membership.until,\n            \"chair\": membership.chair,\n        }\n\n        if hasattr(membership.group, \"board\"):\n            period[\"role\"] = membership.role\n\n        if membership.until is None and hasattr(membership.group, \"board\"):\n            period[\"until\"] = membership.group.board.until\n\n        name = membership.group.name\n        if data.get(name):\n            data[name][\"periods\"].append(period)\n            if data[name][\"earliest\"] > period[\"since\"]:\n                data[name][\"earliest\"] = period[\"since\"]\n            if period[\"until\"] is None or (\n                data[name][\"latest\"] is not None\n                and data[name][\"latest\"] < period[\"until\"]\n            ):\n                data[name][\"latest\"] = period[\"until\"]\n            data[name][\"periods\"].sort(key=lambda x: x[\"since\"])\n        else:\n            data[name] = {\n                \"pk\": membership.group.pk,\n                \"active\": membership.group.active,\n                \"name\": name,\n                \"periods\": [period],\n                \"url\": settings.BASE_URL + membership.group.get_absolute_url(),\n                \"earliest\": period[\"since\"],\n                \"latest\": period[\"until\"],\n            }\n    return data\n\n\ndef member_achievements(member) -> List:\n    \"\"\"Derive a list of achievements of a member.\n\n    Committee and board memberships + mentorships\n    \"\"\"\n    achievements = _member_group_memberships(\n        member,\n        lambda membership: (\n            hasattr(membership.group, \"board\") or hasattr(membership.group, \"committee\")\n        ),\n    )\n\n    mentor_years = member.mentorship_set.all()\n    for mentor_year in mentor_years:\n        name = \"Mentor in {}\".format(mentor_year.year)\n        # Ensure mentorships appear last but are sorted\n        earliest = date.today()\n        earliest = earliest.replace(year=earliest.year + mentor_year.year)\n        if not achievements.get(name):\n            achievements[name] = {\n                \"name\": name,\n                \"earliest\": earliest,\n            }\n    return sorted(achievements.values(), key=lambda x: x[\"earliest\"])\n\n\ndef member_societies(member) -> List:\n    \"\"\"Derive a list of societies a member was part of.\"\"\"\n    societies = _member_group_memberships(\n        member, lambda membership: (hasattr(membership.group, \"society\"))\n    )\n    return sorted(societies.values(), key=lambda x: x[\"earliest\"])\n\n\ndef gen_stats_member_type() -> Dict[str, int]:\n    \"\"\"Generate a dictionary where every key is a member type with the value being the number of current members of that type.\"\"\"\n    data = {}\n    for key, display in Membership.MEMBERSHIP_TYPES:\n        data[str(display)] = (\n            Membership.objects.filter(since__lte=date.today())\n            .filter(Q(until__isnull=True) | Q(until__gt=date.today()))\n            .filter(type=key)\n            .count()\n        )\n    return data\n\n\ndef gen_stats_year() -> Dict[str, Dict[str, int]]:\n    \"\"\"Generate list with 6 entries, where each entry represents the total amount of Thalia members in a year.\n\n    The sixth element contains all the multi-year students.\n    \"\"\"\n    stats_year = {}\n    current_year = datetime_to_lectureyear(date.today())\n\n    for i in range(5):\n        new = {}\n        for key, _ in Membership.MEMBERSHIP_TYPES:\n            new[key] = (\n                Membership.objects.filter(user__profile__starting_year=current_year - i)\n                .filter(since__lte=date.today())\n                .filter(Q(until__isnull=True) | Q(until__gt=date.today()))\n                .filter(type=key)\n                .count()\n            )\n        stats_year[str(current_year - i)] = new\n\n    # Add multi year members\n    new = {}\n    for key, _ in Membership.MEMBERSHIP_TYPES:\n        new[key] = (\n            Membership.objects.filter(user__profile__starting_year__lt=current_year - 4)\n            .filter(since__lte=date.today())\n            .filter(Q(until__isnull=True) | Q(until__gt=date.today()))\n            .filter(type=key)\n            .count()\n        )\n    stats_year[str(gettext(\"Older\"))] = new\n\n    return stats_year\n\n\ndef verify_email_change(change_request) -> None:\n    \"\"\"Mark the email change request as verified.\n\n    :param change_request: the email change request\n    \"\"\"\n    change_request.verified = True\n    change_request.save()\n\n    process_email_change(change_request)\n\n\ndef confirm_email_change(change_request) -> None:\n    \"\"\"Mark the email change request as verified.\n\n    :param change_request: the email change request\n    \"\"\"\n    change_request.confirmed = True\n    change_request.save()\n\n    process_email_change(change_request)\n\n\ndef process_email_change(change_request) -> None:\n    \"\"\"Change the user's email address if the request was completed and send the completion email.\n\n    :param change_request: the email change request\n    \"\"\"\n    if not change_request.completed:\n        return\n\n    member = change_request.member\n    member.email = change_request.email\n    member.save()\n\n    emails.send_email_change_completion_message(change_request)\n\n\ndef execute_data_minimisation(dry_run=False, members=None) -> List[Member]:\n    \"\"\"Clean the profiles of members/users of whom the last membership ended at least 31 days ago.\n\n    :param dry_run: does not really remove data if True\n    :param members: queryset of members to process, optional\n    :return: list of processed members\n    \"\"\"\n    if not members:\n        members = Member.objects\n    members = (\n        members.annotate(membership_count=Count(\"membership\"))\n        .exclude(\n            (\n                Q(membership__until__isnull=True)\n                | Q(membership__until__gt=timezone.now().date())\n            )\n            & Q(membership_count__gt=0)\n        )\n        .distinct()\n        .prefetch_related(\"membership_set\", \"profile\")\n    )\n    deletion_period = timezone.now().date() - timezone.timedelta(days=31)\n    processed_members = []\n    for member in members:\n        if (\n            member.latest_membership is None\n            or member.latest_membership.until <= deletion_period\n        ):\n            processed_members.append(member)\n            profile = member.profile\n            profile.student_number = None\n            profile.phone_number = None\n            profile.address_street = \"<removed> 1\"\n            profile.address_street2 = None\n            profile.address_postal_code = \"<removed>\"\n            profile.address_city = \"<removed>\"\n            profile.address_country = \"NL\"\n            profile.birthday = datetime(1900, 1, 1)\n            profile.emergency_contact_phone_number = None\n            profile.emergency_contact = None\n            member.bank_accounts.all().delete()\n            if not dry_run:\n                profile.save()\n\n    return processed_members\n", "path": "website/members/services.py"}], "after_files": [{"content": "\"\"\"Services defined in the members package.\"\"\"\nfrom datetime import date, datetime\nfrom typing import Callable, List, Dict, Any\n\nfrom django.conf import settings\nfrom django.db.models import Q, Count\nfrom django.utils import timezone\nfrom django.utils.translation import gettext\n\nfrom members import emails\nfrom members.models import Membership, Member\nfrom utils.snippets import datetime_to_lectureyear\n\n\ndef _member_group_memberships(\n    member: Member, condition: Callable[[Membership], bool]\n) -> Dict[str, Any]:\n    \"\"\"Determine the group membership of a user based on a condition.\n\n    :return: Object with group memberships\n    \"\"\"\n    memberships = member.membergroupmembership_set.all()\n    data = {}\n\n    for membership in memberships:\n        if not condition(membership):\n            continue\n        period = {\n            \"since\": membership.since,\n            \"until\": membership.until,\n            \"chair\": membership.chair,\n        }\n\n        if hasattr(membership.group, \"board\"):\n            period[\"role\"] = membership.role\n\n        if membership.until is None and hasattr(membership.group, \"board\"):\n            period[\"until\"] = membership.group.board.until\n\n        name = membership.group.name\n        if data.get(name):\n            data[name][\"periods\"].append(period)\n            if data[name][\"earliest\"] > period[\"since\"]:\n                data[name][\"earliest\"] = period[\"since\"]\n            if period[\"until\"] is None or (\n                data[name][\"latest\"] is not None\n                and data[name][\"latest\"] < period[\"until\"]\n            ):\n                data[name][\"latest\"] = period[\"until\"]\n            data[name][\"periods\"].sort(key=lambda x: x[\"since\"])\n        else:\n            data[name] = {\n                \"pk\": membership.group.pk,\n                \"active\": membership.group.active,\n                \"name\": name,\n                \"periods\": [period],\n                \"url\": settings.BASE_URL + membership.group.get_absolute_url(),\n                \"earliest\": period[\"since\"],\n                \"latest\": period[\"until\"],\n            }\n    return data\n\n\ndef member_achievements(member) -> List:\n    \"\"\"Derive a list of achievements of a member.\n\n    Committee and board memberships + mentorships\n    \"\"\"\n    achievements = _member_group_memberships(\n        member,\n        lambda membership: (\n            hasattr(membership.group, \"board\") or hasattr(membership.group, \"committee\")\n        ),\n    )\n\n    mentor_years = member.mentorship_set.all()\n    for mentor_year in mentor_years:\n        name = \"Mentor in {}\".format(mentor_year.year)\n        # Ensure mentorships appear last but are sorted\n        earliest = date.today()\n        earliest = earliest.replace(year=earliest.year + mentor_year.year)\n        # Making sure it does not crash in leap years\n        if earliest.month == 2 and earliest.day == 29:\n            earliest = earliest.replace(day=28)\n        if not achievements.get(name):\n            achievements[name] = {\n                \"name\": name,\n                \"earliest\": earliest,\n            }\n    return sorted(achievements.values(), key=lambda x: x[\"earliest\"])\n\n\ndef member_societies(member) -> List:\n    \"\"\"Derive a list of societies a member was part of.\"\"\"\n    societies = _member_group_memberships(\n        member, lambda membership: (hasattr(membership.group, \"society\"))\n    )\n    return sorted(societies.values(), key=lambda x: x[\"earliest\"])\n\n\ndef gen_stats_member_type() -> Dict[str, int]:\n    \"\"\"Generate a dictionary where every key is a member type with the value being the number of current members of that type.\"\"\"\n    data = {}\n    for key, display in Membership.MEMBERSHIP_TYPES:\n        data[str(display)] = (\n            Membership.objects.filter(since__lte=date.today())\n            .filter(Q(until__isnull=True) | Q(until__gt=date.today()))\n            .filter(type=key)\n            .count()\n        )\n    return data\n\n\ndef gen_stats_year() -> Dict[str, Dict[str, int]]:\n    \"\"\"Generate list with 6 entries, where each entry represents the total amount of Thalia members in a year.\n\n    The sixth element contains all the multi-year students.\n    \"\"\"\n    stats_year = {}\n    current_year = datetime_to_lectureyear(date.today())\n\n    for i in range(5):\n        new = {}\n        for key, _ in Membership.MEMBERSHIP_TYPES:\n            new[key] = (\n                Membership.objects.filter(user__profile__starting_year=current_year - i)\n                .filter(since__lte=date.today())\n                .filter(Q(until__isnull=True) | Q(until__gt=date.today()))\n                .filter(type=key)\n                .count()\n            )\n        stats_year[str(current_year - i)] = new\n\n    # Add multi year members\n    new = {}\n    for key, _ in Membership.MEMBERSHIP_TYPES:\n        new[key] = (\n            Membership.objects.filter(user__profile__starting_year__lt=current_year - 4)\n            .filter(since__lte=date.today())\n            .filter(Q(until__isnull=True) | Q(until__gt=date.today()))\n            .filter(type=key)\n            .count()\n        )\n    stats_year[str(gettext(\"Older\"))] = new\n\n    return stats_year\n\n\ndef verify_email_change(change_request) -> None:\n    \"\"\"Mark the email change request as verified.\n\n    :param change_request: the email change request\n    \"\"\"\n    change_request.verified = True\n    change_request.save()\n\n    process_email_change(change_request)\n\n\ndef confirm_email_change(change_request) -> None:\n    \"\"\"Mark the email change request as verified.\n\n    :param change_request: the email change request\n    \"\"\"\n    change_request.confirmed = True\n    change_request.save()\n\n    process_email_change(change_request)\n\n\ndef process_email_change(change_request) -> None:\n    \"\"\"Change the user's email address if the request was completed and send the completion email.\n\n    :param change_request: the email change request\n    \"\"\"\n    if not change_request.completed:\n        return\n\n    member = change_request.member\n    member.email = change_request.email\n    member.save()\n\n    emails.send_email_change_completion_message(change_request)\n\n\ndef execute_data_minimisation(dry_run=False, members=None) -> List[Member]:\n    \"\"\"Clean the profiles of members/users of whom the last membership ended at least 31 days ago.\n\n    :param dry_run: does not really remove data if True\n    :param members: queryset of members to process, optional\n    :return: list of processed members\n    \"\"\"\n    if not members:\n        members = Member.objects\n    members = (\n        members.annotate(membership_count=Count(\"membership\"))\n        .exclude(\n            (\n                Q(membership__until__isnull=True)\n                | Q(membership__until__gt=timezone.now().date())\n            )\n            & Q(membership_count__gt=0)\n        )\n        .distinct()\n        .prefetch_related(\"membership_set\", \"profile\")\n    )\n    deletion_period = timezone.now().date() - timezone.timedelta(days=31)\n    processed_members = []\n    for member in members:\n        if (\n            member.latest_membership is None\n            or member.latest_membership.until <= deletion_period\n        ):\n            processed_members.append(member)\n            profile = member.profile\n            profile.student_number = None\n            profile.phone_number = None\n            profile.address_street = \"<removed> 1\"\n            profile.address_street2 = None\n            profile.address_postal_code = \"<removed>\"\n            profile.address_city = \"<removed>\"\n            profile.address_country = \"NL\"\n            profile.birthday = datetime(1900, 1, 1)\n            profile.emergency_contact_phone_number = None\n            profile.emergency_contact = None\n            member.bank_accounts.all().delete()\n            if not dry_run:\n                profile.save()\n\n    return processed_members\n", "path": "website/members/services.py"}]}