Skip to content

Commit b810460

Browse files
authored
Fix UTF-8 encoding issue (#900)
* Force UTF-8 generation. * Rebuilt UTF-8 clean. * Force reading in utf-8.
1 parent ff76178 commit b810460

File tree

4 files changed

+50
-20
lines changed

4 files changed

+50
-20
lines changed

scalene/scalene-gui/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"process": "^0.11.10",
2525
"stream-browserify": "^3.0.0",
2626
"stream-http": "^3.2.0",
27+
"terser-webpack-plugin": "^5.3.11",
2728
"url": "^0.11.4",
2829
"util": "^0.12.5",
2930
"webpack": "^5.96.1",

scalene/scalene-gui/scalene-gui-bundle.js

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scalene/scalene-gui/webpack.config.js

+31-17
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const path = require('path');
22
const webpack = require('webpack');
3+
const TerserPlugin = require('terser-webpack-plugin');
34

45
module.exports = {
56
entry: './scalene-gui.js',
@@ -11,30 +12,43 @@ module.exports = {
1112
},
1213
resolve: {
1314
fallback: {
14-
"crypto": require.resolve("crypto-browserify"),
15-
"stream": require.resolve("stream-browserify"),
16-
"buffer": require.resolve("buffer"),
17-
"util": require.resolve("util"),
18-
"assert": require.resolve("assert"),
19-
"os": require.resolve("os-browserify/browser"),
20-
"http": require.resolve("stream-http"),
21-
"https": require.resolve("https-browserify"),
22-
"url": require.resolve("url/"),
23-
"zlib": require.resolve("browserify-zlib"),
24-
"path": require.resolve("path-browserify"),
25-
"fs": false,
15+
crypto: require.resolve('crypto-browserify'),
16+
stream: require.resolve('stream-browserify'),
17+
buffer: require.resolve('buffer'),
18+
util: require.resolve('util'),
19+
assert: require.resolve('assert'),
20+
os: require.resolve('os-browserify/browser'),
21+
http: require.resolve('stream-http'),
22+
https: require.resolve('https-browserify'),
23+
url: require.resolve('url/'),
24+
zlib: require.resolve('browserify-zlib'),
25+
path: require.resolve('path-browserify'),
26+
fs: false,
2627
},
2728
},
2829
plugins: [
2930
new webpack.ProvidePlugin({
3031
process: 'process/browser',
3132
}),
33+
new webpack.DefinePlugin({
34+
'process.env.LANG': JSON.stringify('en_US.UTF-8'),
35+
}),
3236
],
3337
optimization: {
34-
minimize: true, // Enable minimization
35-
usedExports: false, // Disable tree shaking
36-
sideEffects: false, // Include all files, assuming they have side effects
37-
concatenateModules: false, // Disable module concatenation (scope hoisting)
38-
innerGraph: false, // Disable inner graph analysis
38+
minimize: true,
39+
minimizer: [
40+
new TerserPlugin({
41+
terserOptions: {
42+
output: {
43+
ascii_only: true, // Escape non-ASCII characters
44+
},
45+
},
46+
}),
47+
],
48+
usedExports: false,
49+
sideEffects: false,
50+
concatenateModules: false,
51+
innerGraph: false,
3952
},
53+
devtool: 'source-map', // Enable debugging via source maps
4054
};

scalene/scalene_utility.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,26 @@ def read_file_content(
110110
directory: str, subdirectory: str, filename: str
111111
) -> str:
112112
file_path = os.path.join(directory, subdirectory, filename)
113-
return pathlib.Path(file_path).read_text()
113+
file_content = ""
114+
try:
115+
file_content = pathlib.Path(file_path).read_text(encoding="utf-8")
116+
except UnicodeDecodeError as e:
117+
raise UnicodeDecodeError(
118+
f"Failed to decode file {file_path}. Ensure the file is UTF-8 encoded."
119+
) from e
120+
return file_content
114121

115122
try:
116123
# Load the profile
117124
profile_file = pathlib.Path(profile_fname)
118-
profile = profile_file.read_text()
125+
profile = ""
126+
try:
127+
profile = profile_file.read_text(encoding="utf-8")
128+
except UnicodeDecodeError as e:
129+
raise UnicodeDecodeError(
130+
f"Failed to decode file {profile_file}. Ensure the file is UTF-8 encoded."
131+
) from e
132+
119133
except FileNotFoundError:
120134
assert profile_fname == "demo"
121135
profile = ""

0 commit comments

Comments
 (0)