firefighter-incident 0.0.11__py3-none-any.whl → 0.0.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- firefighter/_version.py +2 -2
- firefighter/incidents/migrations/0019_set_security_components_private.py +67 -0
- firefighter/pagerduty/tasks/trigger_oncall.py +1 -1
- firefighter/raid/client.py +2 -2
- firefighter/raid/signals/incident_created.py +1 -1
- firefighter/slack/messages/slack_messages.py +3 -3
- firefighter/slack/views/events/home.py +1 -1
- firefighter/slack/views/modals/open.py +2 -2
- {firefighter_incident-0.0.11.dist-info → firefighter_incident-0.0.13.dist-info}/METADATA +1 -1
- {firefighter_incident-0.0.11.dist-info → firefighter_incident-0.0.13.dist-info}/RECORD +13 -12
- {firefighter_incident-0.0.11.dist-info → firefighter_incident-0.0.13.dist-info}/WHEEL +0 -0
- {firefighter_incident-0.0.11.dist-info → firefighter_incident-0.0.13.dist-info}/entry_points.txt +0 -0
- {firefighter_incident-0.0.11.dist-info → firefighter_incident-0.0.13.dist-info}/licenses/LICENSE +0 -0
firefighter/_version.py
CHANGED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from django.db import migrations
|
|
4
|
+
|
|
5
|
+
logger = logging.getLogger(__name__)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def set_security_components_to_private(apps, schema_editor):
|
|
9
|
+
"""Set all components belonging to the Security group as private, except 'Bot management & rate limiting & WAF'."""
|
|
10
|
+
Component = apps.get_model("incidents", "Component")
|
|
11
|
+
Group = apps.get_model("incidents", "Group")
|
|
12
|
+
|
|
13
|
+
try:
|
|
14
|
+
security_group = Group.objects.get(name="Security")
|
|
15
|
+
components = Component.objects.filter(group=security_group).exclude(
|
|
16
|
+
name="Bot management & rate limiting & WAF"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
updated_count = 0
|
|
20
|
+
for component in components:
|
|
21
|
+
if not component.private:
|
|
22
|
+
logger.info(f"Setting component '{component.name}' to private")
|
|
23
|
+
component.private = True
|
|
24
|
+
component.save()
|
|
25
|
+
updated_count += 1
|
|
26
|
+
|
|
27
|
+
logger.info(f"Updated {updated_count} Security components to private")
|
|
28
|
+
except Group.DoesNotExist:
|
|
29
|
+
logger.warning("Security group not found, skipping migration")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def revert_security_components_to_public(apps, schema_editor):
|
|
33
|
+
"""Revert all components belonging to the Security group to public, except 'Bot management & rate limiting & WAF'."""
|
|
34
|
+
Component = apps.get_model("incidents", "Component")
|
|
35
|
+
Group = apps.get_model("incidents", "Group")
|
|
36
|
+
|
|
37
|
+
try:
|
|
38
|
+
security_group = Group.objects.get(name="Security")
|
|
39
|
+
components = Component.objects.filter(group=security_group).exclude(
|
|
40
|
+
name="Bot management & rate limiting & WAF"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
updated_count = 0
|
|
44
|
+
for component in components:
|
|
45
|
+
if component.private:
|
|
46
|
+
logger.info(f"Setting component '{component.name}' to public")
|
|
47
|
+
component.private = False
|
|
48
|
+
component.save()
|
|
49
|
+
updated_count += 1
|
|
50
|
+
|
|
51
|
+
logger.info(f"Reverted {updated_count} Security components to public")
|
|
52
|
+
except Group.DoesNotExist:
|
|
53
|
+
logger.warning("Security group not found, skipping reverse migration")
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class Migration(migrations.Migration):
|
|
57
|
+
|
|
58
|
+
dependencies = [
|
|
59
|
+
("incidents", "0018_update_impactlevel_names"),
|
|
60
|
+
]
|
|
61
|
+
|
|
62
|
+
operations = [
|
|
63
|
+
migrations.RunPython(
|
|
64
|
+
set_security_components_to_private,
|
|
65
|
+
revert_security_components_to_public
|
|
66
|
+
),
|
|
67
|
+
]
|
|
@@ -38,7 +38,7 @@ def trigger_oncall(
|
|
|
38
38
|
details = f"""Triggered from {APP_DISPLAY_NAME} incident #{incident.id} {f"by {triggered_by.full_name}" if triggered_by else ""}
|
|
39
39
|
Priority: {incident.priority}
|
|
40
40
|
Environment: {incident.environment}
|
|
41
|
-
|
|
41
|
+
Issue category: {incident.component.group.name} - {incident.component.name}
|
|
42
42
|
FireFighter page: {incident.status_page_url + "?utm_medium=FireFighter+PagerDuty&utm_source=PagerDuty+Incident&utm_campaign=OnCall+Message+In+Channel"}
|
|
43
43
|
Slack channel #{incident.slack_channel_name}: {incident.slack_channel_url}
|
|
44
44
|
|
firefighter/raid/client.py
CHANGED
|
@@ -65,8 +65,8 @@ class RaidJiraClient(JiraClient):
|
|
|
65
65
|
if priority is None:
|
|
66
66
|
priority_value = "-"
|
|
67
67
|
else:
|
|
68
|
-
if not 1 <= priority <=
|
|
69
|
-
raise ValueError("Priority must be between 1 and
|
|
68
|
+
if not 1 <= priority <= 5:
|
|
69
|
+
raise ValueError("Priority must be between 1 and 5")
|
|
70
70
|
priority_value = str(priority)
|
|
71
71
|
if area:
|
|
72
72
|
extra_args["customfield_10920"] = str(area)
|
|
@@ -43,7 +43,7 @@ def create_ticket(
|
|
|
43
43
|
description=f"""{incident.description}\n
|
|
44
44
|
\n
|
|
45
45
|
🧯 This incident has been created for a critical incident. Links below to Slack and {APP_DISPLAY_NAME}.\n
|
|
46
|
-
📦
|
|
46
|
+
📦 Issue category: {incident.component.name} ({incident.component.group.name})\n
|
|
47
47
|
{incident.priority.emoji} Priority: {incident.priority.name}\n""",
|
|
48
48
|
assignee=None,
|
|
49
49
|
reporter=account_id,
|
|
@@ -210,7 +210,7 @@ class SlackMessageIncidentDeclaredAnnouncement(SlackMessageSurface):
|
|
|
210
210
|
def get_blocks(self) -> list[Block]:
|
|
211
211
|
fields = [
|
|
212
212
|
f"{self.incident.priority.emoji} *Priority:* {self.incident.priority.name}",
|
|
213
|
-
f":package: *
|
|
213
|
+
f":package: *Issue category:* {self.incident.component.name}",
|
|
214
214
|
f":speaking_head_in_silhouette: *Opened by:* {user_slack_handle_or_name(self.incident.created_by)}",
|
|
215
215
|
f":calendar: *Created at:* {date_time(self.incident.created_at)}",
|
|
216
216
|
f"{SLACK_APP_EMOJI} <{self.incident.status_page_url + '?utm_medium=FireFighter+Slack&utm_source=Slack+Message&utm_campaign=Announcement+Message+In+Channel'}|*{APP_DISPLAY_NAME} Status Page*>",
|
|
@@ -270,7 +270,7 @@ class SlackMessageIncidentDeclaredAnnouncementGeneral(SlackMessageSurface):
|
|
|
270
270
|
def get_blocks(self) -> list[Block]:
|
|
271
271
|
fields = [
|
|
272
272
|
f"{self.incident.priority.emoji} *Priority:* {self.incident.priority.name}",
|
|
273
|
-
f":package: *
|
|
273
|
+
f":package: *Issue category:* {self.incident.component.name}",
|
|
274
274
|
f"{SLACK_APP_EMOJI} <{self.incident.status_page_url + '?utm_medium=FireFighter+Slack&utm_source=Slack+Message&utm_campaign=Announcement+Message+General'}|*{APP_DISPLAY_NAME} Status Page*>",
|
|
275
275
|
f":speaking_head_in_silhouette: *Opened by:* {user_slack_handle_or_name(self.incident.created_by)}",
|
|
276
276
|
f":calendar: *Created at:* {date_time(self.incident.created_at)}",
|
|
@@ -486,7 +486,7 @@ class SlackMessageIncidentStatusUpdated(SlackMessageSurface):
|
|
|
486
486
|
if self.incident_update.component:
|
|
487
487
|
fields.append(
|
|
488
488
|
MarkdownTextObject(
|
|
489
|
-
text=f":package: *
|
|
489
|
+
text=f":package: *Issue category:* {self.incident.component.group.name} - {self.incident.component.name}"
|
|
490
490
|
)
|
|
491
491
|
)
|
|
492
492
|
if self.incident_update.environment:
|
|
@@ -148,7 +148,7 @@ def _home_incident_element(
|
|
|
148
148
|
text=f":rotating_light: *Priority:* {incident.priority.emoji} {incident.priority.name}"
|
|
149
149
|
),
|
|
150
150
|
MarkdownTextObject(
|
|
151
|
-
text=f":package: *
|
|
151
|
+
text=f":package: *Issue category:* {incident.component.group.name} - {incident.component.name}"
|
|
152
152
|
),
|
|
153
153
|
MarkdownTextObject(
|
|
154
154
|
text=f":speaking_head_in_silhouette: *Last update:* {date_time(incident.updated_at)}"
|
|
@@ -300,11 +300,11 @@ class OpenModal(SlackModal):
|
|
|
300
300
|
|
|
301
301
|
if slack_msg is None:
|
|
302
302
|
slack_msg = "> :slack: A dedicated Slack channel will be created, and responders will be invited to help.\n"
|
|
303
|
-
text =
|
|
303
|
+
text = "> :jira_new: An associated Jira ticket will also be created."
|
|
304
304
|
if not is_during_office_hours(timezone.now()):
|
|
305
305
|
text += "\n> :pagerduty: If you need it, you'll be able to escalate the incident to our 24/7 on-call response teams."
|
|
306
306
|
else:
|
|
307
|
-
text = "> :
|
|
307
|
+
text = "> :jira_new: A Jira ticket will be created."
|
|
308
308
|
done_review_blocks += [SectionBlock(text=text)]
|
|
309
309
|
|
|
310
310
|
return done_review_blocks
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: firefighter-incident
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.13
|
|
4
4
|
Summary: Incident Management tool made for Slack using Django
|
|
5
5
|
Project-URL: Repository, https://github.com/ManoManoTech/firefighter-incident
|
|
6
6
|
Project-URL: Documentation, https://manomanotech.github.io/firefighter-incident/latest/
|
|
@@ -6,7 +6,7 @@ gunicorn.conf.py,sha256=vHsTGjaKOr8FDMp6fTKYTX4AtokmPgYvvt5Mr0Q6APc,273
|
|
|
6
6
|
main.py,sha256=CsbprHoOYhjCLpTJmq9Z_aRYFoFgWxoz2pDLuwm8Eqg,1558
|
|
7
7
|
manage.py,sha256=5ivHGD13C6nJ8QvltKsJ9T9akA5he8da70HLWaEP3k8,689
|
|
8
8
|
firefighter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
firefighter/_version.py,sha256=
|
|
9
|
+
firefighter/_version.py,sha256=qGWOla3klVyqOm_YOKHZibHNWUcX0sSXl2bsaNtaX9E,513
|
|
10
10
|
firefighter/api/__init__.py,sha256=JQW0Bv6xwGqy7ioxx3h6UGMzkkJ4DntDpbvV1Ncgi8k,136
|
|
11
11
|
firefighter/api/admin.py,sha256=x9Ysy-GiYjb0rynmFdS9g56e6n24fkN0ouGy5QD9Yrc,4629
|
|
12
12
|
firefighter/api/apps.py,sha256=P5uU1_gMrDfzurdMbfqw1Bnb2uNKKcMq17WBPg2sLhc,204
|
|
@@ -163,6 +163,7 @@ firefighter/incidents/migrations/0015_update_impact_level.py,sha256=OQVTVrWvQ1or
|
|
|
163
163
|
firefighter/incidents/migrations/0016_update_business_incidents_and_level.py,sha256=O5AL9twmjstSw44ndJ2-Og6dpKreReXVw_brpQb-t0w,3600
|
|
164
164
|
firefighter/incidents/migrations/0017_reorder_impact_types.py,sha256=7NN2KjcDRHNInXyEh8YKZli2LWT_i0UHXBbI21dXB6w,877
|
|
165
165
|
firefighter/incidents/migrations/0018_update_impactlevel_names.py,sha256=E37png_LiXABzuXk-vmxTgikw8YmULODkiytE2mkxT0,2227
|
|
166
|
+
firefighter/incidents/migrations/0019_set_security_components_private.py,sha256=hgQX2Yc7WIIdZVciQfjtQrXWYr1PpyFRc26vqBReDoA,2334
|
|
166
167
|
firefighter/incidents/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
168
|
firefighter/incidents/models/__init__.py,sha256=dCNP-zRYNNDOZB3JDDWp7vCl084Jh6RgDT_iP57RkOY,862
|
|
168
169
|
firefighter/incidents/models/component.py,sha256=7GyXKNFk1MZns6RUGLpkNw5u6He7H9N1LexzXbG4sBM,7445
|
|
@@ -287,7 +288,7 @@ firefighter/pagerduty/tasks/__init__.py,sha256=7OtGthF6OX0Dmbe9U81Gk8h7A0dehfsJY
|
|
|
287
288
|
firefighter/pagerduty/tasks/fetch_oncall.py,sha256=knoyHbBLUSrBsrWdv8UODPlByOOvqW5a5hInRa7-lGI,3952
|
|
288
289
|
firefighter/pagerduty/tasks/fetch_services.py,sha256=GD3cCZtIBmI3mnRJnb4HdWeJwIm1X081gTIE0zAZvks,1268
|
|
289
290
|
firefighter/pagerduty/tasks/fetch_users.py,sha256=wPFV9xR2xj3pNJlHPjM9BlX9I6E8hh7wfO29bH-Jz0k,2489
|
|
290
|
-
firefighter/pagerduty/tasks/trigger_oncall.py,sha256=
|
|
291
|
+
firefighter/pagerduty/tasks/trigger_oncall.py,sha256=tQbFlhYf0RMA4KIGU1E3s2f5rYxF6O06CvQiC_Af-9M,3395
|
|
291
292
|
firefighter/pagerduty/templates/pages/oncall_list.html,sha256=fDgQnST-l5-CiIScQLAioT_ewb7Gs6yW0BWo4T_EDbE,4388
|
|
292
293
|
firefighter/pagerduty/templates/pages/oncall_trigger.html,sha256=Un6BgHp8r52cCbqH8FJLI6criaHpzu6BtjJq10kJg4w,568
|
|
293
294
|
firefighter/pagerduty/templates/partials/trigger_oncall_form_view.html,sha256=m3uIodbv3U76QGcGq5ijCQYwe-PvBY2ISXnEMksdlB4,450
|
|
@@ -298,7 +299,7 @@ firefighter/pagerduty/views/oncall_trigger.py,sha256=LYHpWyEaR6O8NazmsTl5ydtw1XH
|
|
|
298
299
|
firefighter/raid/__init__.py,sha256=nMNmvHCSkyLQsdhTow7myMU62vXk1e755gUntVfFFlY,154
|
|
299
300
|
firefighter/raid/admin.py,sha256=YaqjJ7UcoEf_72kKVVN-O2Pp7_9lGuUdc-nHSQZYEYM,1405
|
|
300
301
|
firefighter/raid/apps.py,sha256=BUkaZSu45Ghdpx1XnE3DaFD4SC2SeUtSDZOTYynte5k,1655
|
|
301
|
-
firefighter/raid/client.py,sha256=
|
|
302
|
+
firefighter/raid/client.py,sha256=Y-aAXbVC_seyo4CfBF5CoiTAu36Jq3XKBTsXTLJGFH0,7993
|
|
302
303
|
firefighter/raid/forms.py,sha256=oJOPHYFtwlffuPgFi4lbbOCoKhwianrvafNicOmT_-c,15816
|
|
303
304
|
firefighter/raid/messages.py,sha256=e75kwi0hCe5ChwU4t-_6Q3Rcy22MLLdVSsYyjvG2SCM,5542
|
|
304
305
|
firefighter/raid/models.py,sha256=FNfPHvlF9h09LxL2a4zFPfc0raArmufywjzTdqGATms,2662
|
|
@@ -312,7 +313,7 @@ firefighter/raid/migrations/0001_initial_oss.py,sha256=oZQ44dHboLeHbvVyziHX_hhdi
|
|
|
312
313
|
firefighter/raid/migrations/0002_featureteam_remove_qualifierrotation_jira_user_and_more.py,sha256=1UkwuNqqjtRJ_xlgNMs9qn2ryLcssQN06ZBCL296CWw,1034
|
|
313
314
|
firefighter/raid/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
314
315
|
firefighter/raid/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
315
|
-
firefighter/raid/signals/incident_created.py,sha256=
|
|
316
|
+
firefighter/raid/signals/incident_created.py,sha256=ksXsjiEU-PgEf30XwEXWd7nbrWMXZgwfidiaYvCaOT8,3740
|
|
316
317
|
firefighter/raid/signals/incident_updated.py,sha256=cLiqgCIKjGZpvkb7w3ASDtJ8tWP4agFpmgfmDnT3xOs,1330
|
|
317
318
|
firefighter/raid/tasks/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
318
319
|
firefighter/raid/views/__init__.py,sha256=a-ZiWaudIAH1OkR7FAFSMtasQ1SaB-lfoKJoArKraCM,5182
|
|
@@ -334,7 +335,7 @@ firefighter/slack/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
334
335
|
firefighter/slack/management/commands/generate_manifest.py,sha256=zFWHAC7ioozcDdhJ5KrLU4JNhULdtYjBUJTtclgBgSo,6911
|
|
335
336
|
firefighter/slack/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
336
337
|
firefighter/slack/messages/base.py,sha256=biH-YEAaldJ-OLHEs5ZjW-gtUYUbjOqxrAEflqV2XS0,4593
|
|
337
|
-
firefighter/slack/messages/slack_messages.py,sha256=
|
|
338
|
+
firefighter/slack/messages/slack_messages.py,sha256=yzxN0v-G0KNlz-rA6va9MlweOZxCTJhgjfQl662F0dc,33072
|
|
338
339
|
firefighter/slack/migrations/0001_initial_oss.py,sha256=XmTPgq7zCME2xDwzRFoVi4OegSIG9eSKoyTNoW05Qtg,12933
|
|
339
340
|
firefighter/slack/migrations/0002_usergroup_tag.py,sha256=098tmGA81mT-R2uhb6uQfZ7gKiRG9bFhEwQ8rrp4SKM,583
|
|
340
341
|
firefighter/slack/migrations/0003_alter_usergroup_tag.py,sha256=ncH3KUWEPZHlbdcAtOJ0KGt5H6EX-cKspTGU3osrAhE,591
|
|
@@ -374,7 +375,7 @@ firefighter/slack/views/events/channel_shared.py,sha256=179KUJ8wZ1hPFXF58Neh3njJ
|
|
|
374
375
|
firefighter/slack/views/events/channel_unarchive.py,sha256=YSwMz9H5CeXXeLOUHWI6uAIS4q_oxe4fyMJ9ha0-fuk,968
|
|
375
376
|
firefighter/slack/views/events/channel_unshared.py,sha256=attB5woORof1OOECyfAbxLqL0QrUtdSVfOdEIjS4YgU,734
|
|
376
377
|
firefighter/slack/views/events/commands.py,sha256=M65X9gtjKOQtbuMuWoeJHqyskw6J0bgNUwyjydVmxLY,4827
|
|
377
|
-
firefighter/slack/views/events/home.py,sha256=
|
|
378
|
+
firefighter/slack/views/events/home.py,sha256=xqQeLfxfvcRrjT-JPou3ddbRSKGTZvnyLfokxHh_K_I,6415
|
|
378
379
|
firefighter/slack/views/events/member_joined_channel.py,sha256=BJySHHTAuDotyRK0TXBiyqzZXsEDZGKM_4KILdXUr5g,2370
|
|
379
380
|
firefighter/slack/views/events/member_left_channel.py,sha256=49CQxYvjJwFEBnnpgrLl8WFk8ArOrj-L7GPNIlULQVw,2181
|
|
380
381
|
firefighter/slack/views/events/message.py,sha256=c8tvo0btOUu_5Bc83oiO3IQbaEyoRiUWFk118yqF90g,2068
|
|
@@ -385,7 +386,7 @@ firefighter/slack/views/modals/close.py,sha256=ur1SSRWk9NYFfL24gjOqoIiXKquDy6qeE
|
|
|
385
386
|
firefighter/slack/views/modals/downgrade_workflow.py,sha256=S0y0_GYH4q7ewZUr_eA9Ly2c1FQueZzNCTiuIiWYUoY,3109
|
|
386
387
|
firefighter/slack/views/modals/edit.py,sha256=60xav4XG4KGS9KknqsQNCQjl3qQzk7OtmHiEYTQ9pUk,3861
|
|
387
388
|
firefighter/slack/views/modals/key_event_message.py,sha256=ga3-ITZyzJExwzctX-GfgnDqyQaxTfcqpqnOwY2E38M,5620
|
|
388
|
-
firefighter/slack/views/modals/open.py,sha256=
|
|
389
|
+
firefighter/slack/views/modals/open.py,sha256=en8F0T36A1FbdEaLKEWAuV8Vr5D47x9S1KdtRa_0Kg8,25348
|
|
389
390
|
firefighter/slack/views/modals/postmortem.py,sha256=AeEtmiam_XgCRxDmltKluNT2VN1gcuCB2VbYeeATVcA,2525
|
|
390
391
|
firefighter/slack/views/modals/select.py,sha256=Y-Ji_ALnzhYkXDBAyi497UL1Xn2vCGqXCtj8eog75Jk,3312
|
|
391
392
|
firefighter/slack/views/modals/send_sos.py,sha256=bP6HgYyDwPrIcTq7n_sQz6UQsxhYbvBDS4HjM0uRccA,4838
|
|
@@ -448,8 +449,8 @@ firefighter_tests/test_slack/views/modals/test_open.py,sha256=z3lvAPOXCUSt7i_9jW
|
|
|
448
449
|
firefighter_tests/test_slack/views/modals/test_send_sos.py,sha256=_rE6jD-gOzcGyhlY0R9GzlGtPx65oOOguJYdENgxtLc,1289
|
|
449
450
|
firefighter_tests/test_slack/views/modals/test_status.py,sha256=oQzPfwdg2tkbo9nfkO1GfS3WydxqSC6vy1AZjZDKT30,2226
|
|
450
451
|
firefighter_tests/test_slack/views/modals/test_update_status.py,sha256=Y8Oa_fraj1vtaGig9Y28_6tOWvMrRPS-wyg3rY-DHBk,39380
|
|
451
|
-
firefighter_incident-0.0.
|
|
452
|
-
firefighter_incident-0.0.
|
|
453
|
-
firefighter_incident-0.0.
|
|
454
|
-
firefighter_incident-0.0.
|
|
455
|
-
firefighter_incident-0.0.
|
|
452
|
+
firefighter_incident-0.0.13.dist-info/METADATA,sha256=EF5mZjZdNgypTxb3lZVVcu1HAxfEVPDZ4mSvJoyyYvI,5488
|
|
453
|
+
firefighter_incident-0.0.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
454
|
+
firefighter_incident-0.0.13.dist-info/entry_points.txt,sha256=c13meJbv7YNmYz7MipMOQwzQ5IeFOPXUBYAJ44XMQsM,61
|
|
455
|
+
firefighter_incident-0.0.13.dist-info/licenses/LICENSE,sha256=krRiGp-a9-1nH1bWpBEdxyTKLhjLmn6DMVVoIb0zF90,1087
|
|
456
|
+
firefighter_incident-0.0.13.dist-info/RECORD,,
|
|
File without changes
|
{firefighter_incident-0.0.11.dist-info → firefighter_incident-0.0.13.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{firefighter_incident-0.0.11.dist-info → firefighter_incident-0.0.13.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|