Skip to content

Commit 087296c

Browse files
authored
Merge pull request #1070 from Py4Js/1069-bug-pyscript-fetch-is-not-an-array
fixed fetch type in py-config
2 parents 0a97146 + e82dd27 commit 087296c

File tree

5 files changed

+44
-34
lines changed

5 files changed

+44
-34
lines changed

source/library/components/py-config/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type {
22
PyConfigFetch,
3+
PyConfigFetchItem,
34
PyConfigInterpreters,
45
PyConfigProperties,
56
PyConfigPropertiesBase,
@@ -16,6 +17,7 @@ import PyConfig from "./py-config";
1617
export type {
1718
PyConfigInterpreters,
1819
PyConfigFetch,
20+
PyConfigFetchItem,
1921
PyConfigSplashscreen,
2022
PyConfigSharedJsonProperties,
2123
PyConfigPropertiesWithJsonType,

source/library/components/py-config/py-config.tsx

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
import propTypes from "prop-types";
22
import { WeakValidationMap, useEffect, useMemo } from "react";
3-
4-
import {
5-
PyConfigInterpreters,
6-
PyConfigSplashscreen,
7-
} from "~root/source/library/components/py-config/py-config.types";
8-
93
import type {
104
PyConfigFetch,
5+
PyConfigFetchItem,
6+
PyConfigInterpreters,
117
PyConfigProperties,
128
PyConfigPropertiesBase,
9+
PyConfigSplashscreen,
1310
PyConfigTag,
1411
} from "./py-config.types";
1512

@@ -54,10 +51,6 @@ const PyConfig: PyConfigTag = <T extends object>({
5451
// eslint-disable-next-line sonarjs/cognitive-complexity
5552
const config: string = useMemo((): string => {
5653
if (type === "json") {
57-
const transformedFiles: string[] = [
58-
...(fetch?.files || []),
59-
...(children?.fetch?.files || []),
60-
];
6154
const transformedPlugins: string[] = [
6255
...(plugins || []),
6356
...(children?.plugins || []),
@@ -66,10 +59,16 @@ const PyConfig: PyConfigTag = <T extends object>({
6659
...(packages || []),
6760
...(children?.packages || []),
6861
];
69-
const transformedFetch: PyConfigFetch = {
70-
files: transformedFiles.length ? transformedFiles : undefined,
71-
...children?.fetch,
72-
};
62+
const transformedFetch: PyConfigFetch = [
63+
...(fetch || []),
64+
...(children?.fetch || []),
65+
].map(({ files, ...restItem }: PyConfigFetchItem): PyConfigFetchItem => {
66+
const transformedFiles: string[] = [...(files || [])];
67+
return {
68+
files: transformedFiles.length ? transformedFiles : undefined,
69+
...restItem,
70+
};
71+
});
7372
const transformedInterpreters: Omit<PyConfigInterpreters, "source"> & {
7473
src?: string;
7574
} = {
@@ -89,7 +88,7 @@ const PyConfig: PyConfigTag = <T extends object>({
8988
interpreters: checkForAnyKey(transformedInterpreters)
9089
? transformedInterpreters
9190
: undefined,
92-
fetch: checkForAnyKey(transformedFetch) ? transformedFetch : undefined,
91+
fetch: transformedFetch.length ? transformedFetch : undefined,
9392
packages: transformedPackages.length ? transformedPackages : undefined,
9493
plugins: transformedPlugins.length ? transformedPlugins : undefined,
9594
...children,
@@ -127,10 +126,18 @@ PyConfig.propTypes = {
127126
name: propTypes.string,
128127
language: propTypes.string,
129128
}),
130-
fetch: propTypes.shape({
131-
files: propTypes.arrayOf(propTypes.string),
132-
}),
133-
packages: propTypes.arrayOf(propTypes.string),
129+
fetch: propTypes.arrayOf(
130+
propTypes.shape({
131+
files: propTypes.oneOfType([
132+
propTypes.arrayOf(propTypes.string),
133+
propTypes.instanceOf(Set),
134+
]),
135+
}),
136+
),
137+
packages: propTypes.oneOfType([
138+
propTypes.arrayOf(propTypes.string),
139+
propTypes.instanceOf(Set),
140+
]),
134141
plugins: propTypes.arrayOf(propTypes.string),
135142
} as WeakValidationMap<PyConfigPropertiesBase>;
136143

source/library/components/py-config/py-config.types.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ export type PyConfigInterpreters = {
1010
name?: string;
1111
language?: string;
1212
};
13+
export type PyConfigFetchItem = { files?: string[] | Set<string> };
1314

14-
export type PyConfigFetch = {
15-
files?: string[] | Set<string>;
16-
};
15+
export type PyConfigFetch = PyConfigFetchItem[];
1716

1817
export type PyConfigSplashscreen = {
1918
autoclose?: boolean;

source/library/components/py-script/py-script.story.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ PyScriptFoliumExample.args = {
6161
export const PyScriptFoliumWithTomlConfigExample: StoryFn<typeof PyScript> =
6262
Template.bind({});
6363

64-
PyScriptFoliumExample.args = {
64+
PyScriptFoliumWithTomlConfigExample.args = {
6565
source: "/folium_map.py",
6666
output: "folium",
6767
generateOutputTag: true,

source/library/index.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,18 @@ import PyButton, {
1212
type PyButtonTag,
1313
} from "./components/py-button";
1414
import PyConfig, {
15-
PyConfigFetch,
16-
PyConfigInterpreters,
17-
PyConfigProperties,
18-
PyConfigPropertiesBase,
19-
PyConfigPropertiesWithChildren,
20-
PyConfigPropertiesWithJsonType,
21-
PyConfigPropertiesWithTomlType,
22-
PyConfigPropertiesWithoutChildren,
23-
PyConfigSharedJsonProperties,
24-
PyConfigSplashscreen,
25-
PyConfigTag,
15+
type PyConfigFetch,
16+
type PyConfigFetchItem,
17+
type PyConfigInterpreters,
18+
type PyConfigProperties,
19+
type PyConfigPropertiesBase,
20+
type PyConfigPropertiesWithChildren,
21+
type PyConfigPropertiesWithJsonType,
22+
type PyConfigPropertiesWithTomlType,
23+
type PyConfigPropertiesWithoutChildren,
24+
type PyConfigSharedJsonProperties,
25+
type PyConfigSplashscreen,
26+
type PyConfigTag,
2627
} from "./components/py-config";
2728
import PyEnv, {
2829
type PyEnvChildrenAsObject,
@@ -123,6 +124,7 @@ export type {
123124
PyButtonTag,
124125
PyConfigInterpreters,
125126
PyConfigFetch,
127+
PyConfigFetchItem,
126128
PyConfigSplashscreen,
127129
PyConfigSharedJsonProperties,
128130
PyConfigPropertiesWithJsonType,

0 commit comments

Comments
 (0)