From 674c570c0331abc7a9406a8a4165a4f0efc59264 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 21:30:29 -0700 Subject: [PATCH 01/17] Fix Windows mime types bug --- src/py/reactpy/reactpy/backend/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index e69de29bb..067e254fb 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -0,0 +1,7 @@ +import mimetypes + +# Fix for issue where Windows registry gets corrupt and mime types go missing +mimetypes.init() +for extension, type in mimetypes.common_types.items(): + if not mimetypes.types_map.get(extension): + mimetypes.add_type(type, extension) From 6f142073124fa946fa4b37702be035d4a5f93e57 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 21:36:07 -0700 Subject: [PATCH 02/17] add changelog --- docs/source/about/changelog.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index f739ce980..11a3bcd2e 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,9 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +**Fixed** + +- :pull:`1050` - Fix issue where JavaScript files can be detected as mime-type ``text/plain`` due to a corrupt Windows registry v1.0.0 From 7303c27d24a67cfa20f2cfe2082771b5ba0caecc Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 21:37:17 -0700 Subject: [PATCH 03/17] fix lint --- src/py/reactpy/reactpy/backend/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 067e254fb..6e48210bf 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -2,6 +2,6 @@ # Fix for issue where Windows registry gets corrupt and mime types go missing mimetypes.init() -for extension, type in mimetypes.common_types.items(): +for extension, mime_type in mimetypes.common_types.items(): if not mimetypes.types_map.get(extension): - mimetypes.add_type(type, extension) + mimetypes.add_type(mime_type, extension) From d0c4d6ad2593de6240086fa77c734b2a08b91c07 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 21:51:07 -0700 Subject: [PATCH 04/17] use static mime types --- src/py/reactpy/reactpy/backend/__init__.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 6e48210bf..3ba0d1f0a 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -2,6 +2,16 @@ # Fix for issue where Windows registry gets corrupt and mime types go missing mimetypes.init() -for extension, mime_type in mimetypes.common_types.items(): +MIME_TYPES = { + ".js": "application/javascript", + ".css": "text/css", + ".ico": "image/x-icon", + ".png": "image/png", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg", + ".svg": "image/svg+xml", + ".json": "application/json", +} +for extension, mime_type in MIME_TYPES.items(): if not mimetypes.types_map.get(extension): mimetypes.add_type(mime_type, extension) From 9ba85bd5093ad6910ffd6085e947d3ddb438f9b3 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 21:55:16 -0700 Subject: [PATCH 05/17] remove mime types we don't immediately need --- src/py/reactpy/reactpy/backend/__init__.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 3ba0d1f0a..1895c8a0e 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -5,11 +5,6 @@ MIME_TYPES = { ".js": "application/javascript", ".css": "text/css", - ".ico": "image/x-icon", - ".png": "image/png", - ".jpg": "image/jpeg", - ".jpeg": "image/jpeg", - ".svg": "image/svg+xml", ".json": "application/json", } for extension, mime_type in MIME_TYPES.items(): From 1b42e32e443f3c271f66987cce8123c2ba800c8b Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 22:05:00 -0700 Subject: [PATCH 06/17] add no cov pragma --- src/py/reactpy/reactpy/backend/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 1895c8a0e..16abc9d09 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -1,12 +1,13 @@ import mimetypes # Fix for issue where Windows registry gets corrupt and mime types go missing -mimetypes.init() +if not mimetypes.inited: # pragma: no cover + mimetypes.init() MIME_TYPES = { ".js": "application/javascript", ".css": "text/css", ".json": "application/json", } for extension, mime_type in MIME_TYPES.items(): - if not mimetypes.types_map.get(extension): + if not mimetypes.types_map.get(extension): # pragma: no cover mimetypes.add_type(mime_type, extension) From a6f7341c08fea8ce3da5afda415df6c779dd3733 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 22:07:00 -0700 Subject: [PATCH 07/17] format --- src/py/reactpy/reactpy/backend/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 16abc9d09..9e3a8911d 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -1,7 +1,7 @@ import mimetypes # Fix for issue where Windows registry gets corrupt and mime types go missing -if not mimetypes.inited: # pragma: no cover +if not mimetypes.inited: # pragma: no cover mimetypes.init() MIME_TYPES = { ".js": "application/javascript", @@ -9,5 +9,5 @@ ".json": "application/json", } for extension, mime_type in MIME_TYPES.items(): - if not mimetypes.types_map.get(extension): # pragma: no cover + if not mimetypes.types_map.get(extension): # pragma: no cover mimetypes.add_type(mime_type, extension) From e95f8395f2d26aa679ba9c3018b65cc495b6bcba Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 22:18:48 -0700 Subject: [PATCH 08/17] try to remove one pragma --- src/py/reactpy/reactpy/backend/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 9e3a8911d..8d100cc2c 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -1,7 +1,7 @@ import mimetypes # Fix for issue where Windows registry gets corrupt and mime types go missing -if not mimetypes.inited: # pragma: no cover +if not mimetypes.inited: mimetypes.init() MIME_TYPES = { ".js": "application/javascript", From 13902cc74905edaec77995e895082eb2ed799fb4 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Tue, 13 Jun 2023 22:37:18 -0700 Subject: [PATCH 09/17] Add logger warning --- src/py/reactpy/reactpy/backend/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 8d100cc2c..18f1bd97e 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -1,4 +1,7 @@ import mimetypes +from logging import getLogger + +_logger = getLogger(__name__) # Fix for issue where Windows registry gets corrupt and mime types go missing if not mimetypes.inited: @@ -10,4 +13,8 @@ } for extension, mime_type in MIME_TYPES.items(): if not mimetypes.types_map.get(extension): # pragma: no cover + _logger.warning( + f"Mime type '{mime_type}:{extension}' is missing." + " Please determine how to fix missing mime types on your OS." + ) mimetypes.add_type(mime_type, extension) From efd2b3a95152fd40905a471f5c9a3fde3cfd6e25 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Wed, 14 Jun 2023 03:47:26 -0700 Subject: [PATCH 10/17] better comment --- src/py/reactpy/reactpy/backend/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 18f1bd97e..211031862 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -3,7 +3,7 @@ _logger = getLogger(__name__) -# Fix for issue where Windows registry gets corrupt and mime types go missing +# Fix for missing mime types due to corrupt Windows registry if not mimetypes.inited: mimetypes.init() MIME_TYPES = { From 8dad923eecd03a957a98ef3e11180c16ee811ce2 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Wed, 14 Jun 2023 03:53:11 -0700 Subject: [PATCH 11/17] format --- src/py/reactpy/reactpy/backend/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 211031862..fd935d155 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -3,7 +3,7 @@ _logger = getLogger(__name__) -# Fix for missing mime types due to corrupt Windows registry +# Fix for missing mime types due to corrupt Windows registry if not mimetypes.inited: mimetypes.init() MIME_TYPES = { From dd938d31db9f944a6cc15aaee90fe50cdadbab72 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Wed, 14 Jun 2023 17:23:21 -0700 Subject: [PATCH 12/17] use lazy logging --- src/py/reactpy/reactpy/backend/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index fd935d155..0468407c0 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -14,7 +14,9 @@ for extension, mime_type in MIME_TYPES.items(): if not mimetypes.types_map.get(extension): # pragma: no cover _logger.warning( - f"Mime type '{mime_type}:{extension}' is missing." - " Please determine how to fix missing mime types on your OS." + "Mime type '%s = %s' is missing. Please research how to " + "fix missing mime types on your operating system.", + extension, + mime_type, ) mimetypes.add_type(mime_type, extension) From 04fccde061f555d52f81693a6fbe3feab3ea0fd6 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Wed, 14 Jun 2023 21:10:28 -0700 Subject: [PATCH 13/17] OS-neutral comment --- src/py/reactpy/reactpy/backend/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 0468407c0..a6aa6d179 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -3,7 +3,7 @@ _logger = getLogger(__name__) -# Fix for missing mime types due to corrupt Windows registry +# Fix for missing mime types due to OS corruption/misconfiguration if not mimetypes.inited: mimetypes.init() MIME_TYPES = { From 4152a3256f6f105f3f2280c6a522459809175d5b Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Wed, 14 Jun 2023 21:14:05 -0700 Subject: [PATCH 14/17] update changelog verbiage --- docs/source/about/changelog.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 11a3bcd2e..3117aee99 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,9 +23,9 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -**Fixed** +**Changed** -- :pull:`1050` - Fix issue where JavaScript files can be detected as mime-type ``text/plain`` due to a corrupt Windows registry +- :pull:`1050` - Warn when operating system has missing mime types, which can result in ``reactpy.run`` not working as expected. v1.0.0 From 228af5b854b68e990fef78f4241af8950052b8cf Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Wed, 14 Jun 2023 21:24:34 -0700 Subject: [PATCH 15/17] Link example issue --- src/py/reactpy/reactpy/backend/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index a6aa6d179..0eb966433 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -4,6 +4,7 @@ _logger = getLogger(__name__) # Fix for missing mime types due to OS corruption/misconfiguration +# Example: https://github.com/encode/starlette/issues/829 if not mimetypes.inited: mimetypes.init() MIME_TYPES = { From a9aace53a07ca7dfb2ff829b367f22916d7db571 Mon Sep 17 00:00:00 2001 From: Mark Bakhit <16909269+Archmonger@users.noreply.github.com> Date: Wed, 14 Jun 2023 21:41:07 -0700 Subject: [PATCH 16/17] Update src/py/reactpy/reactpy/backend/__init__.py Co-authored-by: Ryan Morshead --- src/py/reactpy/reactpy/backend/__init__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index 0eb966433..e08e50649 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -7,12 +7,11 @@ # Example: https://github.com/encode/starlette/issues/829 if not mimetypes.inited: mimetypes.init() -MIME_TYPES = { +for extension, mime_type in { ".js": "application/javascript", ".css": "text/css", ".json": "application/json", -} -for extension, mime_type in MIME_TYPES.items(): +}.items(): if not mimetypes.types_map.get(extension): # pragma: no cover _logger.warning( "Mime type '%s = %s' is missing. Please research how to " From 7aa6fc4a80a031f298ba66feac4c1477d436e114 Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Wed, 14 Jun 2023 22:23:05 -0700 Subject: [PATCH 17/17] add: attempt to fix --- docs/source/about/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 42e0a6eae..a6eff8f73 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -25,7 +25,7 @@ Unreleased **Changed** -- :pull:`1050` - Warn when operating system has missing mime types, which can result in ``reactpy.run`` not working as expected. +- :pull:`1050` - Warn and attempt to fix missing mime types, which can result in ``reactpy.run`` not working as expected. **Fixed**