nautobot 2.4.2__py3-none-any.whl → 2.4.3__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.

Potentially problematic release.


This version of nautobot might be problematic. Click here for more details.

Files changed (132) hide show
  1. nautobot/circuits/templates/circuits/inc/circuit_termination.html +1 -1
  2. nautobot/circuits/tests/integration/test_circuit.py +135 -0
  3. nautobot/circuits/views.py +4 -1
  4. nautobot/cloud/api/views.py +3 -3
  5. nautobot/core/constants.py +0 -1
  6. nautobot/core/forms/__init__.py +2 -0
  7. nautobot/core/forms/forms.py +2 -1
  8. nautobot/core/forms/widgets.py +8 -0
  9. nautobot/core/management/commands/generate_performance_test_endpoints.py +268 -0
  10. nautobot/core/templates/generic/object_bulk_delete.html +1 -1
  11. nautobot/core/templates/generic/object_bulk_edit.html +1 -1
  12. nautobot/core/templates/generic/object_bulk_import.html +1 -1
  13. nautobot/core/templates/generic/object_create.html +5 -0
  14. nautobot/core/templates/generic/object_delete.html +1 -1
  15. nautobot/core/templates/generic/object_detail.html +1 -1
  16. nautobot/core/templates/generic/object_edit.html +1 -1
  17. nautobot/core/templates/inc/javascript.html +2 -0
  18. nautobot/core/templates/widgets/clearable_file.html +5 -0
  19. nautobot/core/templatetags/helpers.py +3 -3
  20. nautobot/core/testing/integration.py +37 -7
  21. nautobot/core/tests/test_commands.py +31 -0
  22. nautobot/core/tests/test_utils.py +17 -2
  23. nautobot/core/utils/lookup.py +12 -1
  24. nautobot/core/views/generic.py +9 -1
  25. nautobot/core/views/mixins.py +9 -1
  26. nautobot/dcim/api/views.py +11 -10
  27. nautobot/dcim/forms.py +3 -6
  28. nautobot/dcim/models/devices.py +1 -2
  29. nautobot/dcim/templates/dcim/cable_trace.html +4 -4
  30. nautobot/dcim/templates/dcim/consoleport.html +14 -4
  31. nautobot/dcim/templates/dcim/consoleserverport.html +14 -4
  32. nautobot/dcim/templates/dcim/device/lldp_neighbors.html +3 -3
  33. nautobot/dcim/templates/dcim/frontport.html +7 -2
  34. nautobot/dcim/templates/dcim/interface.html +9 -4
  35. nautobot/dcim/templates/dcim/powerfeed.html +8 -3
  36. nautobot/dcim/templates/dcim/poweroutlet.html +14 -4
  37. nautobot/dcim/templates/dcim/powerport.html +14 -4
  38. nautobot/dcim/templates/dcim/rearport.html +7 -2
  39. nautobot/dcim/tests/integration/test_fileinputpicker.py +87 -0
  40. nautobot/dcim/tests/test_models.py +1 -1
  41. nautobot/extras/api/views.py +2 -2
  42. nautobot/extras/forms/forms.py +4 -0
  43. nautobot/extras/jobs.py +8 -1
  44. nautobot/extras/templates/extras/job.html +1 -0
  45. nautobot/extras/tests/test_dynamicgroups.py +14 -0
  46. nautobot/extras/tests/test_views.py +197 -9
  47. nautobot/extras/utils.py +30 -0
  48. nautobot/extras/views.py +29 -14
  49. nautobot/ipam/api/views.py +3 -3
  50. nautobot/ipam/forms.py +2 -6
  51. nautobot/project-static/bootstrap-filestyle-1.2.3/bootstrap-filestyle.min.js +11 -0
  52. nautobot/project-static/docs/apps/index.html +1 -1
  53. nautobot/project-static/docs/apps/nautobot-apps.html +1 -1
  54. nautobot/project-static/docs/development/apps/api/models/graphql.html +9 -9
  55. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +2 -2
  56. nautobot/project-static/docs/development/apps/api/setup.html +1 -1
  57. nautobot/project-static/docs/development/apps/migration/code-updates.html +6 -5
  58. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +2 -2
  59. nautobot/project-static/docs/development/apps/migration/from-v1.html +3 -3
  60. nautobot/project-static/docs/development/core/best-practices.html +1 -1
  61. nautobot/project-static/docs/development/core/bootstrap-ui.html +1 -1
  62. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +7 -7
  63. nautobot/project-static/docs/development/core/getting-started.html +2 -2
  64. nautobot/project-static/docs/development/core/index.html +1 -1
  65. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +3 -3
  66. nautobot/project-static/docs/development/core/model-checklist.html +1 -1
  67. nautobot/project-static/docs/development/core/navigation-menu.html +1 -1
  68. nautobot/project-static/docs/development/core/release-checklist.html +1 -1
  69. nautobot/project-static/docs/development/core/settings.html +1 -1
  70. nautobot/project-static/docs/development/core/style-guide.html +4 -4
  71. nautobot/project-static/docs/development/jobs/index.html +8 -1
  72. nautobot/project-static/docs/development/jobs/migration/from-v1.html +3 -2
  73. nautobot/project-static/docs/index.html +3 -2
  74. nautobot/project-static/docs/objects.inv +0 -0
  75. nautobot/project-static/docs/overview/application_stack.html +2 -2
  76. nautobot/project-static/docs/release-notes/version-1.0.html +2 -2
  77. nautobot/project-static/docs/release-notes/version-1.1.html +2 -2
  78. nautobot/project-static/docs/release-notes/version-1.2.html +3 -3
  79. nautobot/project-static/docs/release-notes/version-1.3.html +1 -1
  80. nautobot/project-static/docs/release-notes/version-1.4.html +17 -17
  81. nautobot/project-static/docs/release-notes/version-1.5.html +8 -8
  82. nautobot/project-static/docs/release-notes/version-1.6.html +4 -4
  83. nautobot/project-static/docs/release-notes/version-2.0.html +10 -10
  84. nautobot/project-static/docs/release-notes/version-2.1.html +7 -7
  85. nautobot/project-static/docs/release-notes/version-2.2.html +1 -1
  86. nautobot/project-static/docs/release-notes/version-2.3.html +4 -4
  87. nautobot/project-static/docs/release-notes/version-2.4.html +188 -0
  88. nautobot/project-static/docs/search/search_index.json +1 -1
  89. nautobot/project-static/docs/sitemap.xml +290 -290
  90. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  91. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +3 -3
  92. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +4 -4
  93. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +1 -1
  94. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +3 -3
  95. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +5 -5
  96. nautobot/project-static/docs/user-guide/administration/guides/docker.html +3 -3
  97. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +1 -1
  98. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +4 -4
  99. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +15 -15
  100. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +2 -2
  101. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +1 -1
  102. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +1 -1
  103. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +6 -6
  104. nautobot/project-static/docs/user-guide/administration/installation/services.html +1 -1
  105. nautobot/project-static/docs/user-guide/administration/security/index.html +1 -1
  106. nautobot/project-static/docs/user-guide/administration/security/notices.html +1 -0
  107. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +1 -1
  108. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +11 -8
  109. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +12 -12
  110. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +1 -1
  111. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1 -1
  112. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +3 -3
  113. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +2 -2
  114. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +6 -6
  115. nautobot/project-static/js/dropdown.js +28 -0
  116. nautobot/tenancy/forms.py +9 -0
  117. nautobot/tenancy/templates/tenancy/tenant_create.html +21 -0
  118. nautobot/tenancy/templates/tenancy/tenant_edit.html +2 -21
  119. nautobot/tenancy/templates/tenancy/tenantgroup.html +2 -44
  120. nautobot/tenancy/templates/tenancy/tenantgroup_retrieve.html +1 -0
  121. nautobot/tenancy/tests/test_views.py +5 -1
  122. nautobot/tenancy/urls.py +7 -79
  123. nautobot/tenancy/views.py +51 -80
  124. nautobot/wireless/api/serializers.py +6 -1
  125. nautobot/wireless/api/views.py +3 -3
  126. nautobot/wireless/tests/test_api.py +5 -0
  127. {nautobot-2.4.2.dist-info → nautobot-2.4.3.dist-info}/METADATA +8 -8
  128. {nautobot-2.4.2.dist-info → nautobot-2.4.3.dist-info}/RECORD +132 -123
  129. {nautobot-2.4.2.dist-info → nautobot-2.4.3.dist-info}/LICENSE.txt +0 -0
  130. {nautobot-2.4.2.dist-info → nautobot-2.4.3.dist-info}/NOTICE +0 -0
  131. {nautobot-2.4.2.dist-info → nautobot-2.4.3.dist-info}/WHEEL +0 -0
  132. {nautobot-2.4.2.dist-info → nautobot-2.4.3.dist-info}/entry_points.txt +0 -0
nautobot/tenancy/views.py CHANGED
@@ -2,12 +2,13 @@ from django_tables2 import RequestConfig
2
2
 
3
3
  from nautobot.circuits.models import Circuit
4
4
  from nautobot.core.ui.choices import SectionChoices
5
- from nautobot.core.ui.object_detail import ObjectDetailContent, ObjectFieldsPanel, StatsPanel
6
- from nautobot.core.views import generic
5
+ from nautobot.core.ui.object_detail import ObjectDetailContent, ObjectFieldsPanel, ObjectsTablePanel, StatsPanel
7
6
  from nautobot.core.views.paginator import EnhancedPaginator, get_paginate_count
7
+ from nautobot.core.views.viewsets import NautobotUIViewSet
8
8
  from nautobot.dcim.models import Controller, ControllerManagedDeviceGroup, Device, Location, Rack, RackReservation
9
9
  from nautobot.extras.models import DynamicGroup
10
10
  from nautobot.ipam.models import IPAddress, Prefix, VLAN, VRF
11
+ from nautobot.tenancy.api import serializers
11
12
  from nautobot.virtualization.models import Cluster, VirtualMachine
12
13
 
13
14
  from . import filters, forms, tables
@@ -18,52 +19,51 @@ from .models import Tenant, TenantGroup
18
19
  #
19
20
 
20
21
 
21
- class TenantGroupListView(generic.ObjectListView):
22
- queryset = TenantGroup.objects.all()
23
- filterset = filters.TenantGroupFilterSet
24
- filterset_form = forms.TenantGroupFilterForm
25
- table = tables.TenantGroupTable
26
-
27
-
28
- class TenantGroupView(generic.ObjectView):
22
+ class TenantGroupUIViewSet(NautobotUIViewSet):
23
+ bulk_update_form_class = forms.TenantGroupBulkEditForm
24
+ filterset_class = filters.TenantGroupFilterSet
25
+ filterset_form_class = forms.TenantGroupFilterForm
26
+ form_class = forms.TenantGroupForm
29
27
  queryset = TenantGroup.objects.all()
28
+ serializer_class = serializers.TenantGroupSerializer
29
+ table_class = tables.TenantGroupTable
30
+ object_detail_content = ObjectDetailContent(
31
+ panels=(
32
+ ObjectFieldsPanel(
33
+ section=SectionChoices.LEFT_HALF,
34
+ weight=100,
35
+ fields="__all__",
36
+ ),
37
+ ObjectsTablePanel(
38
+ weight=100,
39
+ section=SectionChoices.RIGHT_HALF,
40
+ context_table_key="tenant_table",
41
+ exclude_columns=["tenant_group"],
42
+ ),
43
+ )
44
+ )
30
45
 
31
46
  def get_extra_context(self, request, instance):
32
47
  # Tenants
33
- tenants = Tenant.objects.restrict(request.user, "view").filter(
34
- tenant_group__in=instance.descendants(include_self=True)
35
- )
36
-
37
- tenant_table = tables.TenantTable(tenants)
38
- tenant_table.columns.hide("tenant_group")
39
-
40
- paginate = {
41
- "paginator_class": EnhancedPaginator,
42
- "per_page": get_paginate_count(request),
43
- }
44
- RequestConfig(request, paginate).configure(tenant_table)
45
-
46
- return {"tenant_table": tenant_table, **super().get_extra_context(request, instance)}
47
-
48
-
49
- class TenantGroupEditView(generic.ObjectEditView):
50
- queryset = TenantGroup.objects.all()
51
- model_form = forms.TenantGroupForm
52
-
53
-
54
- class TenantGroupDeleteView(generic.ObjectDeleteView):
55
- queryset = TenantGroup.objects.all()
56
-
57
-
58
- class TenantGroupBulkImportView(generic.BulkImportView): # 3.0 TODO: remove, unused
59
- queryset = TenantGroup.objects.all()
60
- table = tables.TenantGroupTable
61
-
62
-
63
- class TenantGroupBulkDeleteView(generic.BulkDeleteView):
64
- queryset = TenantGroup.objects.all()
65
- table = tables.TenantGroupTable
66
- filterset = filters.TenantGroupFilterSet
48
+ context = super().get_extra_context(request, instance)
49
+ if self.action == "retrieve":
50
+ # ObjectsTablePanel usually handles the generation of this table, this is an exception here
51
+ # Because we are filtering on its tenant_group as well as the tenant group's descendants
52
+ # i.e. `instance.descendants(include_self=True)`
53
+ tenants = Tenant.objects.restrict(request.user, "view").filter(
54
+ tenant_group__in=instance.descendants(include_self=True)
55
+ )
56
+
57
+ tenant_table = tables.TenantTable(tenants)
58
+ tenant_table.columns.hide("tenant_group")
59
+
60
+ paginate = {
61
+ "paginator_class": EnhancedPaginator,
62
+ "per_page": get_paginate_count(request),
63
+ }
64
+ RequestConfig(request, paginate).configure(tenant_table)
65
+ context["tenant_table"] = tenant_table
66
+ return context
67
67
 
68
68
 
69
69
  #
@@ -71,15 +71,14 @@ class TenantGroupBulkDeleteView(generic.BulkDeleteView):
71
71
  #
72
72
 
73
73
 
74
- class TenantListView(generic.ObjectListView):
74
+ class TenantUIViewSet(NautobotUIViewSet):
75
+ bulk_update_form_class = forms.TenantBulkEditForm
76
+ filterset_class = filters.TenantFilterSet
77
+ filterset_form_class = forms.TenantFilterForm
78
+ form_class = forms.TenantForm
75
79
  queryset = Tenant.objects.all()
76
- filterset = filters.TenantFilterSet
77
- filterset_form = forms.TenantFilterForm
78
- table = tables.TenantTable
79
-
80
-
81
- class TenantView(generic.ObjectView):
82
- queryset = Tenant.objects.select_related("tenant_group")
80
+ serializer_class = serializers.TenantSerializer
81
+ table_class = tables.TenantTable
83
82
  object_detail_content = ObjectDetailContent(
84
83
  panels=(
85
84
  ObjectFieldsPanel(
@@ -112,31 +111,3 @@ class TenantView(generic.ObjectView):
112
111
  ),
113
112
  )
114
113
  )
115
-
116
-
117
- class TenantEditView(generic.ObjectEditView):
118
- queryset = Tenant.objects.all()
119
- model_form = forms.TenantForm
120
- template_name = "tenancy/tenant_edit.html"
121
-
122
-
123
- class TenantDeleteView(generic.ObjectDeleteView):
124
- queryset = Tenant.objects.all()
125
-
126
-
127
- class TenantBulkImportView(generic.BulkImportView): # 3.0 TODO: remove, unused
128
- queryset = Tenant.objects.all()
129
- table = tables.TenantTable
130
-
131
-
132
- class TenantBulkEditView(generic.BulkEditView):
133
- queryset = Tenant.objects.select_related("tenant_group")
134
- filterset = filters.TenantFilterSet
135
- table = tables.TenantTable
136
- form = forms.TenantBulkEditForm
137
-
138
-
139
- class TenantBulkDeleteView(generic.BulkDeleteView):
140
- queryset = Tenant.objects.select_related("tenant_group")
141
- filterset = filters.TenantFilterSet
142
- table = tables.TenantTable
@@ -15,10 +15,15 @@ class SupportedDataRateSerializer(TaggedModelSerializerMixin, NautobotModelSeria
15
15
 
16
16
 
17
17
  class RadioProfileSerializer(TaggedModelSerializerMixin, NautobotModelSerializer):
18
- channel_width = serializers.ListField(child=ChoiceField(choices=RadioProfileChannelWidthChoices), allow_empty=True)
18
+ channel_width = serializers.ListField(
19
+ child=ChoiceField(choices=RadioProfileChannelWidthChoices),
20
+ allow_empty=True,
21
+ required=False,
22
+ )
19
23
  allowed_channel_list = serializers.ListField(
20
24
  child=serializers.IntegerField(required=False),
21
25
  allow_empty=True,
26
+ required=False,
22
27
  )
23
28
 
24
29
  class Meta:
@@ -1,4 +1,4 @@
1
- from nautobot.extras.api.views import NautobotModelViewSet
1
+ from nautobot.extras.api.views import ModelViewSet, NautobotModelViewSet
2
2
  from nautobot.wireless import filters, models
3
3
 
4
4
  from . import serializers
@@ -22,13 +22,13 @@ class WirelessNetworkViewSet(NautobotModelViewSet):
22
22
  filterset_class = filters.WirelessNetworkFilterSet
23
23
 
24
24
 
25
- class ControllerManagedDeviceGroupWirelessNetworkAssignmentViewSet(NautobotModelViewSet):
25
+ class ControllerManagedDeviceGroupWirelessNetworkAssignmentViewSet(ModelViewSet):
26
26
  queryset = models.ControllerManagedDeviceGroupWirelessNetworkAssignment.objects.all()
27
27
  serializer_class = serializers.ControllerManagedDeviceGroupWirelessNetworkAssignmentSerializer
28
28
  filterset_class = filters.ControllerManagedDeviceGroupWirelessNetworkAssignmentFilterSet
29
29
 
30
30
 
31
- class ControllerManagedDeviceGroupRadioProfileAssignmentViewSet(NautobotModelViewSet):
31
+ class ControllerManagedDeviceGroupRadioProfileAssignmentViewSet(ModelViewSet):
32
32
  queryset = models.ControllerManagedDeviceGroupRadioProfileAssignment.objects.all()
33
33
  serializer_class = serializers.ControllerManagedDeviceGroupRadioProfileAssignmentSerializer
34
34
  filterset_class = filters.ControllerManagedDeviceGroupRadioProfileAssignmentFilterSet
@@ -107,6 +107,11 @@ class RadioProfileTest(APIViewTestCases.APIViewTestCase):
107
107
  "tx_power_min": 20,
108
108
  "allowed_channel_list": [],
109
109
  },
110
+ {
111
+ "name": "Radio Profile 7",
112
+ "frequency": "6GHz",
113
+ "regulatory_domain": "US",
114
+ },
110
115
  ]
111
116
  cls.bulk_update_data = {
112
117
  "frequency": "5GHz",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nautobot
3
- Version: 2.4.2
3
+ Version: 2.4.3
4
4
  Summary: Source of truth and network automation platform.
5
5
  Home-page: https://nautobot.com
6
6
  License: Apache-2.0
@@ -22,7 +22,7 @@ Provides-Extra: mysql
22
22
  Provides-Extra: napalm
23
23
  Provides-Extra: remote-storage
24
24
  Provides-Extra: sso
25
- Requires-Dist: Django (>=4.2.18,<4.3.0)
25
+ Requires-Dist: Django (>=4.2.19,<4.3.0)
26
26
  Requires-Dist: GitPython (>=3.1.44,<3.2.0)
27
27
  Requires-Dist: Jinja2 (>=3.1.5,<3.2.0)
28
28
  Requires-Dist: Markdown (>=3.6,<3.7)
@@ -33,7 +33,7 @@ Requires-Dist: django-ajax-tables (>=1.1.1,<1.2.0)
33
33
  Requires-Dist: django-auth-ldap (>=5.1.0,<5.2.0) ; extra == "all" or extra == "ldap"
34
34
  Requires-Dist: django-celery-beat (>=2.6.0,<2.7.0)
35
35
  Requires-Dist: django-celery-results (>=2.5.1,<2.6.0)
36
- Requires-Dist: django-constance (>=3.1.0,<3.2.0)
36
+ Requires-Dist: django-constance (>=4.3.0,<4.4.0)
37
37
  Requires-Dist: django-cors-headers (>=4.4.0,<4.5.0)
38
38
  Requires-Dist: django-db-file-storage (>=0.5.6.1,<0.6.0.0)
39
39
  Requires-Dist: django-extensions (>=3.2.3,<3.3.0)
@@ -44,7 +44,7 @@ Requires-Dist: django-prometheus (>=2.3.1,<2.4.0)
44
44
  Requires-Dist: django-redis (>=5.4.0,<5.5.0)
45
45
  Requires-Dist: django-silk (>=5.3.2,<5.4.0)
46
46
  Requires-Dist: django-storages (==1.14.3) ; extra == "all" or extra == "remote-storage"
47
- Requires-Dist: django-structlog[celery] (>=9.0.0,<10.0.0)
47
+ Requires-Dist: django-structlog[celery] (>=9.0.1,<10.0.0)
48
48
  Requires-Dist: django-tables2 (>=2.7.5,<2.8.0)
49
49
  Requires-Dist: django-taggit (>=6.1.0,<6.2.0)
50
50
  Requires-Dist: django-timezone-field (>=7.0,<7.1)
@@ -57,7 +57,7 @@ Requires-Dist: graphene-django (>=2.16.0,<2.17.0)
57
57
  Requires-Dist: graphene-django-optimizer (>=0.8.0,<0.9.0)
58
58
  Requires-Dist: jsonschema (>=4.7.0,<5.0.0)
59
59
  Requires-Dist: kombu (>=5.4.2,<5.5.0)
60
- Requires-Dist: kubernetes (>=31.0.0,<32.0.0)
60
+ Requires-Dist: kubernetes (>=32.0.0,<33.0.0)
61
61
  Requires-Dist: mysqlclient (>=2.2.7,<2.3.0) ; extra == "all" or extra == "mysql"
62
62
  Requires-Dist: napalm (>=4.1.0,<6.0.0) ; extra == "all" or extra == "napalm"
63
63
  Requires-Dist: netaddr (>=1.3.0,<1.4.0)
@@ -68,8 +68,8 @@ Requires-Dist: prometheus-client (>=0.20.0,<0.21.0)
68
68
  Requires-Dist: psycopg2-binary (>=2.9.10,<2.10.0)
69
69
  Requires-Dist: python-slugify (>=8.0.3,<8.1.0)
70
70
  Requires-Dist: pyuwsgi (>=2.0.26,<2.1.0)
71
- Requires-Dist: social-auth-app-django (>=5.4.2,<5.5.0)
72
- Requires-Dist: social-auth-core[saml] (>=4.5.3,<4.6.0) ; extra == "all" or extra == "sso"
71
+ Requires-Dist: social-auth-app-django (>=5.4.3,<5.5.0)
72
+ Requires-Dist: social-auth-core[saml] (>=4.5.6,<4.6.0) ; extra == "all" or extra == "sso"
73
73
  Requires-Dist: svgwrite (>=1.4.2,<1.5.0)
74
74
  Project-URL: Documentation, https://docs.nautobot.com
75
75
  Project-URL: Repository, https://github.com/nautobot/nautobot
@@ -92,7 +92,7 @@ Nautobot is a Network Source of Truth and Network Automation Platform built as a
92
92
 
93
93
  The complete documentation for Nautobot can be found at [Read the Docs](https://docs.nautobot.com/).
94
94
 
95
- Questions? Comments? Start by perusing our [GitHub discussions](https://github.com/nautobot/nautobot/discussions) for the topic you have in mind, or join the **#nautobot** channel on [Network to Code's Slack community](https://slack.networktocode.com/)!
95
+ Questions? Comments? Start by perusing our [GitHub discussions](https://github.com/nautobot/nautobot/discussions) for the topic you have in mind, or join the `#nautobot` channel on [Network to Code's Slack community](https://slack.networktocode.com/)!
96
96
 
97
97
  ## Build Status
98
98