We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Add a file path provider
In the file providers would be nice to have a file_path provider who would return a path like ```/lorem/ipsum/lorem.pdf```.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `faker/providers/file/__init__.py`
Content:
```
1 # coding=utf-8
2 from __future__ import unicode_literals
3 from collections import OrderedDict
4 
5 from .. import BaseProvider
6 from ..lorem.la import Provider as WordProvider
7 
8 
9 class Provider(BaseProvider):
10     application_mime_types = (
11 
12         "application/atom+xml", # Atom feeds
13         "application/ecmascript",
14         # ECMAScript/JavaScript; Defined in RFC 4329 (equivalent to application/javascript but with stricter processing rules)
15         "application/EDI-X12", # EDI X12 data; Defined in RFC 1767
16         "application/EDIFACT", # EDI EDIFACT data; Defined in RFC 1767
17         "application/json", # JavaScript Object Notation JSON; Defined in RFC 4627
18         "application/javascript", # ECMAScript/JavaScript; Defined in RFC 4329 (equivalent to application/ecmascript
19         #   but with looser processing rules) It is not accepted in IE 8
20         #   or earlier - text/javascript is accepted but it is defined as obsolete in RFC 4329.
21         #   The "type" attribute of the <script> tag in HTML5 is optional and in practice
22         #   omitting the media type of JavaScript programs is the most interoperable
23         #   solution since all browsers have always assumed the correct
24         #   default even before HTML5.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "application/octet-stream",  # Arbitrary binary data.[6] Generally speaking this type identifies files that are not associated with a specific application. Contrary to past assumptions by software packages such as Apache this is not a type that should be applied to unknown files. In such a case, a server or application should not indicate a content type, as it may be incorrect, but rather, should omit the type in order to allow the recipient to guess the type.[7]
25         "application/ogg", # Ogg, a multimedia bitstream container format; Defined in RFC 5334
26         "application/pdf", # Portable Document Format, PDF has been in use for document exchange
27         #   on the Internet since 1993; Defined in RFC 3778
28         "application/postscript", # PostScript; Defined in RFC 2046
29         "application/rdf+xml", # Resource Description Framework; Defined by RFC 3870
30         "application/rss+xml", # RSS feeds
31         "application/soap+xml", # SOAP; Defined by RFC 3902
32         "application/font-woff", # Web Open Font Format; (candidate recommendation; use application/x-font-woff
33         #   until standard is official)
34         "application/xhtml+xml", # XHTML; Defined by RFC 3236
35         "application/xml-dtd", # DTD files; Defined by RFC 3023
36         "application/xop+xml", # XOP
37         "application/zip", # ZIP archive files; Registered[8]
38         "application/gzip",         # Gzip, Defined in RFC 6713
39     )
40 
41     audio_mime_types = (
42         "audio/basic", # mulaw audio at 8 kHz, 1 channel; Defined in RFC 2046
43         "audio/L24", # 24bit Linear PCM audio at 8-48 kHz, 1-N channels; Defined in RFC 3190
44         "audio/mp4", # MP4 audio
45         "audio/mpeg", # MP3 or other MPEG audio; Defined in RFC 3003
46         "audio/ogg", # Ogg Vorbis, Speex, Flac and other audio; Defined in RFC 5334
47         "audio/vorbis", # Vorbis encoded audio; Defined in RFC 5215
48         "audio/vnd.rn-realaudio", # RealAudio; Documented in RealPlayer Help[9]
49         "audio/vnd.wave", # WAV audio; Defined in RFC 2361
50         "audio/webm",               # WebM open media format
51     )
52 
53     image_mime_types = (
54         "image/gif", # GIF image; Defined in RFC 2045 and RFC 2046
55         "image/jpeg", # JPEG JFIF image; Defined in RFC 2045 and RFC 2046
56         "image/pjpeg",
57         # JPEG JFIF image; Associated with Internet Explorer; Listed in ms775147(v=vs.85) - Progressive JPEG, initiated before global browser support for progressive JPEGs (Microsoft and Firefox).
58         "image/png", # Portable Network Graphics; Registered,[10] Defined in RFC 2083
59         "image/svg+xml", # SVG vector image; Defined in SVG Tiny 1.2 Specification Appendix M
60         "image/tiff", # Tag Image File Format (only for Baseline TIFF); Defined in RFC 3302
61         "image/vnd.microsoft.icon",  # ICO image; Registered[11]
62     )
63 
64     message_mime_types = (
65         "message/http", # Defined in RFC 2616
66         "message/imdn+xml", # IMDN Instant Message Disposition Notification; Defined in RFC 5438
67         "message/partial", # Email; Defined in RFC 2045 and RFC 2046
68         "message/rfc822",  # Email; EML files, MIME files, MHT files, MHTML files; Defined in RFC 2045 and RFC 2046
69     )
70 
71     model_mime_types = (
72         "model/example", # Defined in RFC 4735
73         "model/iges", # IGS files, IGES files; Defined in RFC 2077
74         "model/mesh", # MSH files, MESH files; Defined in RFC 2077, SILO files
75         "model/vrml", # WRL files, VRML files; Defined in RFC 2077
76         "model/x3d+binary", # X3D ISO standard for representing 3D computer graphics, X3DB binary files
77         "model/x3d+vrml", # X3D ISO standard for representing 3D computer graphics, X3DV VRML files
78         "model/x3d+xml",  # X3D ISO standard for representing 3D computer graphics, X3D XML files
79     )
80 
81     multipart_mime_types = (
82         "multipart/mixed", # MIME Email; Defined in RFC 2045 and RFC 2046
83         "multipart/alternative", # MIME Email; Defined in RFC 2045 and RFC 2046
84         "multipart/related", # MIME Email; Defined in RFC 2387 and used by MHTML (HTML mail)
85         "multipart/form-data", # MIME Webform; Defined in RFC 2388
86         "multipart/signed", # Defined in RFC 1847
87         "multipart/encrypted",  # Defined in RFC 1847
88     )
89 
90     text_mime_types = (
91         "text/cmd", # commands; subtype resident in Gecko browsers like Firefox 3.5
92         "text/css", # Cascading Style Sheets; Defined in RFC 2318
93         "text/csv", # Comma-separated values; Defined in RFC 4180
94         "text/html", # HTML; Defined in RFC 2854
95         "text/javascript",
96         # (Obsolete): JavaScript; Defined in and obsoleted by RFC 4329 in order to discourage its usage in favor of application/javascript. However, text/javascript is allowed in HTML 4 and 5 and, unlike application/javascript, has cross-browser support. The "type" attribute of the <script> tag in HTML5 is optional and there is no need to use it at all since all browsers have always assumed the correct default (even in HTML 4 where it was required by the specification).
97         "text/plain", # Textual data; Defined in RFC 2046 and RFC 3676
98         "text/vcard", # vCard (contact information); Defined in RFC 6350
99         "text/xml",  # Extensible Markup Language; Defined in RFC 3023
100     )
101 
102     video_mime_types = (
103         "video/mpeg", # MPEG-1 video with multiplexed audio; Defined in RFC 2045 and RFC 2046
104         "video/mp4", # MP4 video; Defined in RFC 4337
105         "video/ogg", # Ogg Theora or other video (with audio); Defined in RFC 5334
106         "video/quicktime", # QuickTime video; Registered[12]
107         "video/webm", # WebM Matroska-based open media format
108         "video/x-matroska", # Matroska open media format
109         "video/x-ms-wmv", # Windows Media Video; Documented in Microsoft KB 288102
110         "video/x-flv",  # Flash video (FLV files)
111     )
112 
113     mime_types = OrderedDict((
114         ('application', application_mime_types),
115         ('audio', audio_mime_types),
116         ('image', image_mime_types),
117         ('message', message_mime_types),
118         ('model', model_mime_types),
119         ('multipart', multipart_mime_types),
120         ('text', text_mime_types),
121         ('video', video_mime_types),
122     ))
123 
124     audio_file_extensions = (
125         "flac",
126         "mp3",
127         "wav",
128     )
129 
130     image_file_extensions = (
131         "bmp",
132         "gif",
133         "jpeg",
134         "jpg",
135         "png",
136         "tiff",
137     )
138 
139     text_file_extensions = (
140         "css",
141         "csv",
142         "html",
143         "js",
144         "json",
145         "txt",
146     )
147 
148     video_file_extensions = (
149         "mp4",
150         "avi",
151         "mov",
152         "webm",
153     )
154 
155     office_file_extensions = (
156         "doc",  # legacy MS Word
157         "docx",  # MS Word
158         "xls",  # legacy MS Excel
159         "xlsx",  # MS Excel
160         "ppt",  # legacy MS PowerPoint
161         "pptx",  # MS PowerPoint
162         "odt",  # LibreOffice document
163         "ods",  # LibreOffice spreadsheet
164         "odp",  # LibreOffice presentation
165         "pages",  # Apple Pages
166         "numbers",  # Apple Numbers
167         "key",  # Apple Keynote
168         "pdf",  # Portable Document Format
169     )
170 
171     file_extensions = OrderedDict((
172         ("audio", audio_file_extensions),
173         ("image", image_file_extensions),
174         ("office", office_file_extensions),
175         ("text", text_file_extensions),
176         ("video", video_file_extensions),
177     ))
178 
179     @classmethod
180     def mime_type(cls, category=None):
181         """
182         :param category: application|audio|image|message|model|multipart|text|video
183         """
184         category = category if category else cls.random_element(list(cls.mime_types.keys()))
185         return cls.random_element(cls.mime_types[category])
186 
187     @classmethod
188     def file_name(cls, category=None, extension=None):
189         """
190         :param category: audio|image|office|text|video
191         :param extension: file extension
192         """
193         extension = extension if extension else cls.file_extension(category)
194         filename = WordProvider.word()
195         return '{0}.{1}'.format(filename, extension)
196 
197     @classmethod
198     def file_extension(cls, category=None):
199         """
200         :param category: audio|image|office|text|video
201         """
202         category = category if category else cls.random_element(list(cls.file_extensions.keys()))
203         return cls.random_element(cls.file_extensions[category])
204
```
--- 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/faker/providers/file/__init__.py b/faker/providers/file/__init__.py
--- a/faker/providers/file/__init__.py
+++ b/faker/providers/file/__init__.py
@@ -201,3 +201,16 @@
         """
         category = category if category else cls.random_element(list(cls.file_extensions.keys()))
         return cls.random_element(cls.file_extensions[category])
+
+    @classmethod
+    def file_path(cls, depth=1, category=None, extension=None):
+        """
+        :param category: audio|image|office|text|video
+        :param extension: file extension
+        :param depth: depth of the file (depth >= 0)
+        """
+        file = Provider.file_name(category, extension)
+        path = "/{0}".format(file)
+        for d in range(0, depth):
+            path = "/{0}{1}".format(WordProvider.word(), path)
+        return path

{"golden_diff": "diff --git a/faker/providers/file/__init__.py b/faker/providers/file/__init__.py\n--- a/faker/providers/file/__init__.py\n+++ b/faker/providers/file/__init__.py\n@@ -201,3 +201,16 @@\n         \"\"\"\n         category = category if category else cls.random_element(list(cls.file_extensions.keys()))\n         return cls.random_element(cls.file_extensions[category])\n+\n+    @classmethod\n+    def file_path(cls, depth=1, category=None, extension=None):\n+        \"\"\"\n+        :param category: audio|image|office|text|video\n+        :param extension: file extension\n+        :param depth: depth of the file (depth >= 0)\n+        \"\"\"\n+        file = Provider.file_name(category, extension)\n+        path = \"/{0}\".format(file)\n+        for d in range(0, depth):\n+            path = \"/{0}{1}\".format(WordProvider.word(), path)\n+        return path\n", "issue": "Add a file path provider\nIn the file providers would be nice to have a file_path provider who would return a path like ```/lorem/ipsum/lorem.pdf```.\n", "before_files": [{"content": "# coding=utf-8\nfrom __future__ import unicode_literals\nfrom collections import OrderedDict\n\nfrom .. import BaseProvider\nfrom ..lorem.la import Provider as WordProvider\n\n\nclass Provider(BaseProvider):\n    application_mime_types = (\n\n        \"application/atom+xml\", # Atom feeds\n        \"application/ecmascript\",\n        # ECMAScript/JavaScript; Defined in RFC 4329 (equivalent to application/javascript but with stricter processing rules)\n        \"application/EDI-X12\", # EDI X12 data; Defined in RFC 1767\n        \"application/EDIFACT\", # EDI EDIFACT data; Defined in RFC 1767\n        \"application/json\", # JavaScript Object Notation JSON; Defined in RFC 4627\n        \"application/javascript\", # ECMAScript/JavaScript; Defined in RFC 4329 (equivalent to application/ecmascript\n        #   but with looser processing rules) It is not accepted in IE 8\n        #   or earlier - text/javascript is accepted but it is defined as obsolete in RFC 4329.\n        #   The \"type\" attribute of the <script> tag in HTML5 is optional and in practice\n        #   omitting the media type of JavaScript programs is the most interoperable\n        #   solution since all browsers have always assumed the correct\n        #   default even before HTML5.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \"application/octet-stream\",  # Arbitrary binary data.[6] Generally speaking this type identifies files that are not associated with a specific application. Contrary to past assumptions by software packages such as Apache this is not a type that should be applied to unknown files. In such a case, a server or application should not indicate a content type, as it may be incorrect, but rather, should omit the type in order to allow the recipient to guess the type.[7]\n        \"application/ogg\", # Ogg, a multimedia bitstream container format; Defined in RFC 5334\n        \"application/pdf\", # Portable Document Format, PDF has been in use for document exchange\n        #   on the Internet since 1993; Defined in RFC 3778\n        \"application/postscript\", # PostScript; Defined in RFC 2046\n        \"application/rdf+xml\", # Resource Description Framework; Defined by RFC 3870\n        \"application/rss+xml\", # RSS feeds\n        \"application/soap+xml\", # SOAP; Defined by RFC 3902\n        \"application/font-woff\", # Web Open Font Format; (candidate recommendation; use application/x-font-woff\n        #   until standard is official)\n        \"application/xhtml+xml\", # XHTML; Defined by RFC 3236\n        \"application/xml-dtd\", # DTD files; Defined by RFC 3023\n        \"application/xop+xml\", # XOP\n        \"application/zip\", # ZIP archive files; Registered[8]\n        \"application/gzip\",         # Gzip, Defined in RFC 6713\n    )\n\n    audio_mime_types = (\n        \"audio/basic\", # mulaw audio at 8 kHz, 1 channel; Defined in RFC 2046\n        \"audio/L24\", # 24bit Linear PCM audio at 8-48 kHz, 1-N channels; Defined in RFC 3190\n        \"audio/mp4\", # MP4 audio\n        \"audio/mpeg\", # MP3 or other MPEG audio; Defined in RFC 3003\n        \"audio/ogg\", # Ogg Vorbis, Speex, Flac and other audio; Defined in RFC 5334\n        \"audio/vorbis\", # Vorbis encoded audio; Defined in RFC 5215\n        \"audio/vnd.rn-realaudio\", # RealAudio; Documented in RealPlayer Help[9]\n        \"audio/vnd.wave\", # WAV audio; Defined in RFC 2361\n        \"audio/webm\",               # WebM open media format\n    )\n\n    image_mime_types = (\n        \"image/gif\", # GIF image; Defined in RFC 2045 and RFC 2046\n        \"image/jpeg\", # JPEG JFIF image; Defined in RFC 2045 and RFC 2046\n        \"image/pjpeg\",\n        # JPEG JFIF image; Associated with Internet Explorer; Listed in ms775147(v=vs.85) - Progressive JPEG, initiated before global browser support for progressive JPEGs (Microsoft and Firefox).\n        \"image/png\", # Portable Network Graphics; Registered,[10] Defined in RFC 2083\n        \"image/svg+xml\", # SVG vector image; Defined in SVG Tiny 1.2 Specification Appendix M\n        \"image/tiff\", # Tag Image File Format (only for Baseline TIFF); Defined in RFC 3302\n        \"image/vnd.microsoft.icon\",  # ICO image; Registered[11]\n    )\n\n    message_mime_types = (\n        \"message/http\", # Defined in RFC 2616\n        \"message/imdn+xml\", # IMDN Instant Message Disposition Notification; Defined in RFC 5438\n        \"message/partial\", # Email; Defined in RFC 2045 and RFC 2046\n        \"message/rfc822\",  # Email; EML files, MIME files, MHT files, MHTML files; Defined in RFC 2045 and RFC 2046\n    )\n\n    model_mime_types = (\n        \"model/example\", # Defined in RFC 4735\n        \"model/iges\", # IGS files, IGES files; Defined in RFC 2077\n        \"model/mesh\", # MSH files, MESH files; Defined in RFC 2077, SILO files\n        \"model/vrml\", # WRL files, VRML files; Defined in RFC 2077\n        \"model/x3d+binary\", # X3D ISO standard for representing 3D computer graphics, X3DB binary files\n        \"model/x3d+vrml\", # X3D ISO standard for representing 3D computer graphics, X3DV VRML files\n        \"model/x3d+xml\",  # X3D ISO standard for representing 3D computer graphics, X3D XML files\n    )\n\n    multipart_mime_types = (\n        \"multipart/mixed\", # MIME Email; Defined in RFC 2045 and RFC 2046\n        \"multipart/alternative\", # MIME Email; Defined in RFC 2045 and RFC 2046\n        \"multipart/related\", # MIME Email; Defined in RFC 2387 and used by MHTML (HTML mail)\n        \"multipart/form-data\", # MIME Webform; Defined in RFC 2388\n        \"multipart/signed\", # Defined in RFC 1847\n        \"multipart/encrypted\",  # Defined in RFC 1847\n    )\n\n    text_mime_types = (\n        \"text/cmd\", # commands; subtype resident in Gecko browsers like Firefox 3.5\n        \"text/css\", # Cascading Style Sheets; Defined in RFC 2318\n        \"text/csv\", # Comma-separated values; Defined in RFC 4180\n        \"text/html\", # HTML; Defined in RFC 2854\n        \"text/javascript\",\n        # (Obsolete): JavaScript; Defined in and obsoleted by RFC 4329 in order to discourage its usage in favor of application/javascript. However, text/javascript is allowed in HTML 4 and 5 and, unlike application/javascript, has cross-browser support. The \"type\" attribute of the <script> tag in HTML5 is optional and there is no need to use it at all since all browsers have always assumed the correct default (even in HTML 4 where it was required by the specification).\n        \"text/plain\", # Textual data; Defined in RFC 2046 and RFC 3676\n        \"text/vcard\", # vCard (contact information); Defined in RFC 6350\n        \"text/xml\",  # Extensible Markup Language; Defined in RFC 3023\n    )\n\n    video_mime_types = (\n        \"video/mpeg\", # MPEG-1 video with multiplexed audio; Defined in RFC 2045 and RFC 2046\n        \"video/mp4\", # MP4 video; Defined in RFC 4337\n        \"video/ogg\", # Ogg Theora or other video (with audio); Defined in RFC 5334\n        \"video/quicktime\", # QuickTime video; Registered[12]\n        \"video/webm\", # WebM Matroska-based open media format\n        \"video/x-matroska\", # Matroska open media format\n        \"video/x-ms-wmv\", # Windows Media Video; Documented in Microsoft KB 288102\n        \"video/x-flv\",  # Flash video (FLV files)\n    )\n\n    mime_types = OrderedDict((\n        ('application', application_mime_types),\n        ('audio', audio_mime_types),\n        ('image', image_mime_types),\n        ('message', message_mime_types),\n        ('model', model_mime_types),\n        ('multipart', multipart_mime_types),\n        ('text', text_mime_types),\n        ('video', video_mime_types),\n    ))\n\n    audio_file_extensions = (\n        \"flac\",\n        \"mp3\",\n        \"wav\",\n    )\n\n    image_file_extensions = (\n        \"bmp\",\n        \"gif\",\n        \"jpeg\",\n        \"jpg\",\n        \"png\",\n        \"tiff\",\n    )\n\n    text_file_extensions = (\n        \"css\",\n        \"csv\",\n        \"html\",\n        \"js\",\n        \"json\",\n        \"txt\",\n    )\n\n    video_file_extensions = (\n        \"mp4\",\n        \"avi\",\n        \"mov\",\n        \"webm\",\n    )\n\n    office_file_extensions = (\n        \"doc\",  # legacy MS Word\n        \"docx\",  # MS Word\n        \"xls\",  # legacy MS Excel\n        \"xlsx\",  # MS Excel\n        \"ppt\",  # legacy MS PowerPoint\n        \"pptx\",  # MS PowerPoint\n        \"odt\",  # LibreOffice document\n        \"ods\",  # LibreOffice spreadsheet\n        \"odp\",  # LibreOffice presentation\n        \"pages\",  # Apple Pages\n        \"numbers\",  # Apple Numbers\n        \"key\",  # Apple Keynote\n        \"pdf\",  # Portable Document Format\n    )\n\n    file_extensions = OrderedDict((\n        (\"audio\", audio_file_extensions),\n        (\"image\", image_file_extensions),\n        (\"office\", office_file_extensions),\n        (\"text\", text_file_extensions),\n        (\"video\", video_file_extensions),\n    ))\n\n    @classmethod\n    def mime_type(cls, category=None):\n        \"\"\"\n        :param category: application|audio|image|message|model|multipart|text|video\n        \"\"\"\n        category = category if category else cls.random_element(list(cls.mime_types.keys()))\n        return cls.random_element(cls.mime_types[category])\n\n    @classmethod\n    def file_name(cls, category=None, extension=None):\n        \"\"\"\n        :param category: audio|image|office|text|video\n        :param extension: file extension\n        \"\"\"\n        extension = extension if extension else cls.file_extension(category)\n        filename = WordProvider.word()\n        return '{0}.{1}'.format(filename, extension)\n\n    @classmethod\n    def file_extension(cls, category=None):\n        \"\"\"\n        :param category: audio|image|office|text|video\n        \"\"\"\n        category = category if category else cls.random_element(list(cls.file_extensions.keys()))\n        return cls.random_element(cls.file_extensions[category])\n", "path": "faker/providers/file/__init__.py"}], "after_files": [{"content": "# coding=utf-8\nfrom __future__ import unicode_literals\nfrom collections import OrderedDict\n\nfrom .. import BaseProvider\nfrom ..lorem.la import Provider as WordProvider\n\n\nclass Provider(BaseProvider):\n    application_mime_types = (\n\n        \"application/atom+xml\", # Atom feeds\n        \"application/ecmascript\",\n        # ECMAScript/JavaScript; Defined in RFC 4329 (equivalent to application/javascript but with stricter processing rules)\n        \"application/EDI-X12\", # EDI X12 data; Defined in RFC 1767\n        \"application/EDIFACT\", # EDI EDIFACT data; Defined in RFC 1767\n        \"application/json\", # JavaScript Object Notation JSON; Defined in RFC 4627\n        \"application/javascript\", # ECMAScript/JavaScript; Defined in RFC 4329 (equivalent to application/ecmascript\n        #   but with looser processing rules) It is not accepted in IE 8\n        #   or earlier - text/javascript is accepted but it is defined as obsolete in RFC 4329.\n        #   The \"type\" attribute of the <script> tag in HTML5 is optional and in practice\n        #   omitting the media type of JavaScript programs is the most interoperable\n        #   solution since all browsers have always assumed the correct\n        #   default even before HTML5.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \"application/octet-stream\",  # Arbitrary binary data.[6] Generally speaking this type identifies files that are not associated with a specific application. Contrary to past assumptions by software packages such as Apache this is not a type that should be applied to unknown files. In such a case, a server or application should not indicate a content type, as it may be incorrect, but rather, should omit the type in order to allow the recipient to guess the type.[7]\n        \"application/ogg\", # Ogg, a multimedia bitstream container format; Defined in RFC 5334\n        \"application/pdf\", # Portable Document Format, PDF has been in use for document exchange\n        #   on the Internet since 1993; Defined in RFC 3778\n        \"application/postscript\", # PostScript; Defined in RFC 2046\n        \"application/rdf+xml\", # Resource Description Framework; Defined by RFC 3870\n        \"application/rss+xml\", # RSS feeds\n        \"application/soap+xml\", # SOAP; Defined by RFC 3902\n        \"application/font-woff\", # Web Open Font Format; (candidate recommendation; use application/x-font-woff\n        #   until standard is official)\n        \"application/xhtml+xml\", # XHTML; Defined by RFC 3236\n        \"application/xml-dtd\", # DTD files; Defined by RFC 3023\n        \"application/xop+xml\", # XOP\n        \"application/zip\", # ZIP archive files; Registered[8]\n        \"application/gzip\",         # Gzip, Defined in RFC 6713\n    )\n\n    audio_mime_types = (\n        \"audio/basic\", # mulaw audio at 8 kHz, 1 channel; Defined in RFC 2046\n        \"audio/L24\", # 24bit Linear PCM audio at 8-48 kHz, 1-N channels; Defined in RFC 3190\n        \"audio/mp4\", # MP4 audio\n        \"audio/mpeg\", # MP3 or other MPEG audio; Defined in RFC 3003\n        \"audio/ogg\", # Ogg Vorbis, Speex, Flac and other audio; Defined in RFC 5334\n        \"audio/vorbis\", # Vorbis encoded audio; Defined in RFC 5215\n        \"audio/vnd.rn-realaudio\", # RealAudio; Documented in RealPlayer Help[9]\n        \"audio/vnd.wave\", # WAV audio; Defined in RFC 2361\n        \"audio/webm\",               # WebM open media format\n    )\n\n    image_mime_types = (\n        \"image/gif\", # GIF image; Defined in RFC 2045 and RFC 2046\n        \"image/jpeg\", # JPEG JFIF image; Defined in RFC 2045 and RFC 2046\n        \"image/pjpeg\",\n        # JPEG JFIF image; Associated with Internet Explorer; Listed in ms775147(v=vs.85) - Progressive JPEG, initiated before global browser support for progressive JPEGs (Microsoft and Firefox).\n        \"image/png\", # Portable Network Graphics; Registered,[10] Defined in RFC 2083\n        \"image/svg+xml\", # SVG vector image; Defined in SVG Tiny 1.2 Specification Appendix M\n        \"image/tiff\", # Tag Image File Format (only for Baseline TIFF); Defined in RFC 3302\n        \"image/vnd.microsoft.icon\",  # ICO image; Registered[11]\n    )\n\n    message_mime_types = (\n        \"message/http\", # Defined in RFC 2616\n        \"message/imdn+xml\", # IMDN Instant Message Disposition Notification; Defined in RFC 5438\n        \"message/partial\", # Email; Defined in RFC 2045 and RFC 2046\n        \"message/rfc822\",  # Email; EML files, MIME files, MHT files, MHTML files; Defined in RFC 2045 and RFC 2046\n    )\n\n    model_mime_types = (\n        \"model/example\", # Defined in RFC 4735\n        \"model/iges\", # IGS files, IGES files; Defined in RFC 2077\n        \"model/mesh\", # MSH files, MESH files; Defined in RFC 2077, SILO files\n        \"model/vrml\", # WRL files, VRML files; Defined in RFC 2077\n        \"model/x3d+binary\", # X3D ISO standard for representing 3D computer graphics, X3DB binary files\n        \"model/x3d+vrml\", # X3D ISO standard for representing 3D computer graphics, X3DV VRML files\n        \"model/x3d+xml\",  # X3D ISO standard for representing 3D computer graphics, X3D XML files\n    )\n\n    multipart_mime_types = (\n        \"multipart/mixed\", # MIME Email; Defined in RFC 2045 and RFC 2046\n        \"multipart/alternative\", # MIME Email; Defined in RFC 2045 and RFC 2046\n        \"multipart/related\", # MIME Email; Defined in RFC 2387 and used by MHTML (HTML mail)\n        \"multipart/form-data\", # MIME Webform; Defined in RFC 2388\n        \"multipart/signed\", # Defined in RFC 1847\n        \"multipart/encrypted\",  # Defined in RFC 1847\n    )\n\n    text_mime_types = (\n        \"text/cmd\", # commands; subtype resident in Gecko browsers like Firefox 3.5\n        \"text/css\", # Cascading Style Sheets; Defined in RFC 2318\n        \"text/csv\", # Comma-separated values; Defined in RFC 4180\n        \"text/html\", # HTML; Defined in RFC 2854\n        \"text/javascript\",\n        # (Obsolete): JavaScript; Defined in and obsoleted by RFC 4329 in order to discourage its usage in favor of application/javascript. However, text/javascript is allowed in HTML 4 and 5 and, unlike application/javascript, has cross-browser support. The \"type\" attribute of the <script> tag in HTML5 is optional and there is no need to use it at all since all browsers have always assumed the correct default (even in HTML 4 where it was required by the specification).\n        \"text/plain\", # Textual data; Defined in RFC 2046 and RFC 3676\n        \"text/vcard\", # vCard (contact information); Defined in RFC 6350\n        \"text/xml\",  # Extensible Markup Language; Defined in RFC 3023\n    )\n\n    video_mime_types = (\n        \"video/mpeg\", # MPEG-1 video with multiplexed audio; Defined in RFC 2045 and RFC 2046\n        \"video/mp4\", # MP4 video; Defined in RFC 4337\n        \"video/ogg\", # Ogg Theora or other video (with audio); Defined in RFC 5334\n        \"video/quicktime\", # QuickTime video; Registered[12]\n        \"video/webm\", # WebM Matroska-based open media format\n        \"video/x-matroska\", # Matroska open media format\n        \"video/x-ms-wmv\", # Windows Media Video; Documented in Microsoft KB 288102\n        \"video/x-flv\",  # Flash video (FLV files)\n    )\n\n    mime_types = OrderedDict((\n        ('application', application_mime_types),\n        ('audio', audio_mime_types),\n        ('image', image_mime_types),\n        ('message', message_mime_types),\n        ('model', model_mime_types),\n        ('multipart', multipart_mime_types),\n        ('text', text_mime_types),\n        ('video', video_mime_types),\n    ))\n\n    audio_file_extensions = (\n        \"flac\",\n        \"mp3\",\n        \"wav\",\n    )\n\n    image_file_extensions = (\n        \"bmp\",\n        \"gif\",\n        \"jpeg\",\n        \"jpg\",\n        \"png\",\n        \"tiff\",\n    )\n\n    text_file_extensions = (\n        \"css\",\n        \"csv\",\n        \"html\",\n        \"js\",\n        \"json\",\n        \"txt\",\n    )\n\n    video_file_extensions = (\n        \"mp4\",\n        \"avi\",\n        \"mov\",\n        \"webm\",\n    )\n\n    office_file_extensions = (\n        \"doc\",  # legacy MS Word\n        \"docx\",  # MS Word\n        \"xls\",  # legacy MS Excel\n        \"xlsx\",  # MS Excel\n        \"ppt\",  # legacy MS PowerPoint\n        \"pptx\",  # MS PowerPoint\n        \"odt\",  # LibreOffice document\n        \"ods\",  # LibreOffice spreadsheet\n        \"odp\",  # LibreOffice presentation\n        \"pages\",  # Apple Pages\n        \"numbers\",  # Apple Numbers\n        \"key\",  # Apple Keynote\n        \"pdf\",  # Portable Document Format\n    )\n\n    file_extensions = OrderedDict((\n        (\"audio\", audio_file_extensions),\n        (\"image\", image_file_extensions),\n        (\"office\", office_file_extensions),\n        (\"text\", text_file_extensions),\n        (\"video\", video_file_extensions),\n    ))\n\n    @classmethod\n    def mime_type(cls, category=None):\n        \"\"\"\n        :param category: application|audio|image|message|model|multipart|text|video\n        \"\"\"\n        category = category if category else cls.random_element(list(cls.mime_types.keys()))\n        return cls.random_element(cls.mime_types[category])\n\n    @classmethod\n    def file_name(cls, category=None, extension=None):\n        \"\"\"\n        :param category: audio|image|office|text|video\n        :param extension: file extension\n        \"\"\"\n        extension = extension if extension else cls.file_extension(category)\n        filename = WordProvider.word()\n        return '{0}.{1}'.format(filename, extension)\n\n    @classmethod\n    def file_extension(cls, category=None):\n        \"\"\"\n        :param category: audio|image|office|text|video\n        \"\"\"\n        category = category if category else cls.random_element(list(cls.file_extensions.keys()))\n        return cls.random_element(cls.file_extensions[category])\n\n    @classmethod\n    def file_path(cls, depth=1, category=None, extension=None):\n        \"\"\"\n        :param category: audio|image|office|text|video\n        :param extension: file extension\n        :param depth: depth of the file (depth >= 0)\n        \"\"\"\n        file = Provider.file_name(category, extension)\n        path = \"/{0}\".format(file)\n        for d in range(0, depth):\n            path = \"/{0}{1}\".format(WordProvider.word(), path)\n        return path\n", "path": "faker/providers/file/__init__.py"}]}