Skip to content

Commit 795f4f0

Browse files
committed
Redefined what UseLastKnownVersion does. It now loads the newer python version available, which is closer to the meaning of the word.
Removed CanUseLatest.
1 parent 27c43d1 commit 795f4f0

File tree

2 files changed

+35
-197
lines changed

2 files changed

+35
-197
lines changed

PythonForDelphi/Components/Sources/Core/Definition.Inc

Lines changed: 0 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -21,32 +21,6 @@
2121
(* Dr. Dietmar Budelsky, 1998-01-07 *)
2222
(**************************************************************************)
2323

24-
/////////////////////////////////////////////////////////////////////////////
25-
// Select a Python version by commenting out the corresponding line, or
26-
// modify the default Python version below, in the Python versions section.
27-
/////////////////////////////////////////////////////////////////////////////
28-
29-
//{$DEFINE PYTHON25}
30-
//{$DEFINE PYTHON26}
31-
//{$DEFINE PYTHON27}
32-
//{$DEFINE PYTHON32}
33-
//{$DEFINE PYTHON33}
34-
//{$DEFINE PYTHON34}
35-
//{$DEFINE PYTHON35}
36-
//{$DEFINE PYTHON36}
37-
//{$DEFINE PYTHON37}
38-
//{$DEFINE PYTHON38}
39-
40-
/////////////////////////////////////////////////////////////////////////////
41-
// OS symbols. Note that MSWINDOWS is defined from Delphi6/Kylix.
42-
/////////////////////////////////////////////////////////////////////////////
43-
44-
{$IFNDEF MSWINDOWS}
45-
{$IFDEF WIN32}
46-
{$DEFINE MSWINDOWS}
47-
{$ENDIF}
48-
{$ENDIF}
49-
5024
/////////////////////////////////////////////////////////////////////////////
5125
// Delphi, C++ Builder versions
5226
/////////////////////////////////////////////////////////////////////////////
@@ -181,113 +155,7 @@
181155
{$DEFINE DELPHI10.2_OR_HIGHER}
182156
{$DEFINE DELPHI10.3_OR_HIGHER}
183157
{$ENDIF}
184-
/////////////////////////////////////////////////////////////////////////////
185-
// Python versions
186-
/////////////////////////////////////////////////////////////////////////////
187-
188-
// Here we select a default Python version, if no version was explicitely specified.
189-
// Note that the installer will let the user specify its default Python version, and
190-
// thus will edit this file.
191-
192-
{$IFNDEF PYTHON38}
193-
{$IFNDEF PYTHON37}
194-
{$IFNDEF PYTHON36}
195-
{$IFNDEF PYTHON35}
196-
{$IFNDEF PYTHON34}
197-
{$IFNDEF PYTHON33}
198-
{$IFNDEF PYTHON32}
199-
{$IFNDEF PYTHON27}
200-
{$IFNDEF PYTHON26}
201-
{$IFNDEF PYTHON25}
202-
{---<START OF DEFAULT PYTHON VERSION>---}
203-
{$DEFINE PYTHON27}
204-
{---<END OF DEFAULT PYTHON VERSION>---}
205-
{$ENDIF}
206-
{$ENDIF}
207-
{$ENDIF}
208-
{$ENDIF}
209-
{$ENDIF}
210-
{$ENDIF}
211-
{$ENDIF}
212-
{$ENDIF}
213-
{$ENDIF}
214-
{$ENDIF}
215158

216-
{$IFDEF PYTHON25}
217-
{$DEFINE PYTHON25_OR_HIGHER}
218-
{$ENDIF}
219-
{$IFDEF PYTHON26}
220-
{$DEFINE PYTHON25_OR_HIGHER}
221-
{$DEFINE PYTHON26_OR_HIGHER}
222-
{$ENDIF}
223-
{$IFDEF PYTHON27}
224-
{$DEFINE PYTHON25_OR_HIGHER}
225-
{$DEFINE PYTHON26_OR_HIGHER}
226-
{$DEFINE PYTHON27_OR_HIGHER}
227-
{$ENDIF}
228-
{$IFDEF PYTHON32}
229-
{$DEFINE PYTHON25_OR_HIGHER}
230-
{$DEFINE PYTHON26_OR_HIGHER}
231-
{$DEFINE PYTHON27_OR_HIGHER}
232-
{$DEFINE PYTHON32_OR_HIGHER}
233-
{$ENDIF}
234-
{$IFDEF PYTHON33}
235-
{$DEFINE PYTHON25_OR_HIGHER}
236-
{$DEFINE PYTHON26_OR_HIGHER}
237-
{$DEFINE PYTHON27_OR_HIGHER}
238-
{$DEFINE PYTHON32_OR_HIGHER}
239-
{$DEFINE PYTHON33_OR_HIGHER}
240-
{$ENDIF}
241-
{$IFDEF PYTHON34}
242-
{$DEFINE PYTHON25_OR_HIGHER}
243-
{$DEFINE PYTHON26_OR_HIGHER}
244-
{$DEFINE PYTHON27_OR_HIGHER}
245-
{$DEFINE PYTHON32_OR_HIGHER}
246-
{$DEFINE PYTHON33_OR_HIGHER}
247-
{$DEFINE PYTHON34_OR_HIGHER}
248-
{$ENDIF}
249-
{$IFDEF PYTHON35}
250-
{$DEFINE PYTHON25_OR_HIGHER}
251-
{$DEFINE PYTHON26_OR_HIGHER}
252-
{$DEFINE PYTHON27_OR_HIGHER}
253-
{$DEFINE PYTHON32_OR_HIGHER}
254-
{$DEFINE PYTHON33_OR_HIGHER}
255-
{$DEFINE PYTHON34_OR_HIGHER}
256-
{$DEFINE PYTHON35_OR_HIGHER}
257-
{$ENDIF}
258-
{$IFDEF PYTHON36}
259-
{$DEFINE PYTHON25_OR_HIGHER}
260-
{$DEFINE PYTHON26_OR_HIGHER}
261-
{$DEFINE PYTHON27_OR_HIGHER}
262-
{$DEFINE PYTHON32_OR_HIGHER}
263-
{$DEFINE PYTHON33_OR_HIGHER}
264-
{$DEFINE PYTHON34_OR_HIGHER}
265-
{$DEFINE PYTHON35_OR_HIGHER}
266-
{$DEFINE PYTHON36_OR_HIGHER}
267-
{$ENDIF}
268-
{$IFDEF PYTHON37}
269-
{$DEFINE PYTHON25_OR_HIGHER}
270-
{$DEFINE PYTHON26_OR_HIGHER}
271-
{$DEFINE PYTHON27_OR_HIGHER}
272-
{$DEFINE PYTHON32_OR_HIGHER}
273-
{$DEFINE PYTHON33_OR_HIGHER}
274-
{$DEFINE PYTHON34_OR_HIGHER}
275-
{$DEFINE PYTHON35_OR_HIGHER}
276-
{$DEFINE PYTHON36_OR_HIGHER}
277-
{$DEFINE PYTHON37_OR_HIGHER}
278-
{$ENDIF}
279-
{$IFDEF PYTHON38}
280-
{$DEFINE PYTHON25_OR_HIGHER}
281-
{$DEFINE PYTHON26_OR_HIGHER}
282-
{$DEFINE PYTHON27_OR_HIGHER}
283-
{$DEFINE PYTHON32_OR_HIGHER}
284-
{$DEFINE PYTHON33_OR_HIGHER}
285-
{$DEFINE PYTHON34_OR_HIGHER}
286-
{$DEFINE PYTHON35_OR_HIGHER}
287-
{$DEFINE PYTHON36_OR_HIGHER}
288-
{$DEFINE PYTHON37_OR_HIGHER}
289-
{$DEFINE PYTHON38_OR_HIGHER}
290-
{$ENDIF}
291159

292160
/////////////////////////////////////////////////////////////////////////////
293161
// Misc

PythonForDelphi/Components/Sources/Core/PythonEngine.pas

Lines changed: 35 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -95,88 +95,60 @@ interface
9595
//#######################################################
9696

9797
type
98-
TPythonVersionProp = packed record
98+
TPythonVersionProp = record
9999
DllName : string;
100100
RegVersion : string;
101101
APIVersion : Integer;
102-
CanUseLatest : Boolean;
103102
end;
104103
const
105104
{$IFDEF MSWINDOWS}
106105
PYTHON_KNOWN_VERSIONS: array[1..10] of TPythonVersionProp =
107106
(
108-
(DllName: 'python25.dll'; RegVersion: '2.5'; APIVersion: 1013; CanUseLatest: True),
109-
(DllName: 'python26.dll'; RegVersion: '2.6'; APIVersion: 1013; CanUseLatest: True),
110-
(DllName: 'python27.dll'; RegVersion: '2.7'; APIVersion: 1013; CanUseLatest: True),
111-
(DllName: 'python32.dll'; RegVersion: '3.2'; APIVersion: 1013; CanUseLatest: True),
112-
(DllName: 'python33.dll'; RegVersion: '3.3'; APIVersion: 1013; CanUseLatest: True),
113-
(DllName: 'python34.dll'; RegVersion: '3.4'; APIVersion: 1013; CanUseLatest: True),
114-
(DllName: 'python35.dll'; RegVersion: '3.5'; APIVersion: 1013; CanUseLatest: True),
115-
(DllName: 'python36.dll'; RegVersion: '3.6'; APIVersion: 1013; CanUseLatest: True),
116-
(DllName: 'python37.dll'; RegVersion: '3.7'; APIVersion: 1013; CanUseLatest: True),
117-
(DllName: 'python38.dll'; RegVersion: '3.8'; APIVersion: 1013; CanUseLatest: True)
107+
(DllName: 'python25.dll'; RegVersion: '2.5'; APIVersion: 1013),
108+
(DllName: 'python26.dll'; RegVersion: '2.6'; APIVersion: 1013),
109+
(DllName: 'python27.dll'; RegVersion: '2.7'; APIVersion: 1013),
110+
(DllName: 'python32.dll'; RegVersion: '3.2'; APIVersion: 1013),
111+
(DllName: 'python33.dll'; RegVersion: '3.3'; APIVersion: 1013),
112+
(DllName: 'python34.dll'; RegVersion: '3.4'; APIVersion: 1013),
113+
(DllName: 'python35.dll'; RegVersion: '3.5'; APIVersion: 1013),
114+
(DllName: 'python36.dll'; RegVersion: '3.6'; APIVersion: 1013),
115+
(DllName: 'python37.dll'; RegVersion: '3.7'; APIVersion: 1013),
116+
(DllName: 'python38.dll'; RegVersion: '3.8'; APIVersion: 1013)
118117
);
119118
{$ENDIF}
120119
{$IFDEF _so_files}
121120
PYTHON_KNOWN_VERSIONS: array[1..10] of TPythonVersionProp =
122121
(
123-
(DllName: 'libpython2.5.so'; RegVersion: '2.5'; APIVersion: 1013; CanUseLatest: True),
124-
(DllName: 'libpython2.6.so'; RegVersion: '2.6'; APIVersion: 1013; CanUseLatest: True),
125-
(DllName: 'libpython2.7.so'; RegVersion: '2.7'; APIVersion: 1013; CanUseLatest: True),
126-
(DllName: 'libpython3.2.so'; RegVersion: '3.2'; APIVersion: 1013; CanUseLatest: True),
127-
(DllName: 'libpython3.3.so'; RegVersion: '3.3'; APIVersion: 1013; CanUseLatest: True),
128-
(DllName: 'libpython3.4.so'; RegVersion: '3.4'; APIVersion: 1013; CanUseLatest: True),
129-
(DllName: 'libpython3.5.so'; RegVersion: '3.5'; APIVersion: 1013; CanUseLatest: True),
130-
(DllName: 'libpython3.6.so'; RegVersion: '3.6'; APIVersion: 1013; CanUseLatest: True),
131-
(DllName: 'libpython3.7.so'; RegVersion: '3.7'; APIVersion: 1013; CanUseLatest: True),
132-
(DllName: 'libpython3.8.so'; RegVersion: '3.8'; APIVersion: 1013; CanUseLatest: True)
122+
(DllName: 'libpython2.5.so'; RegVersion: '2.5'; APIVersion: 1013),
123+
(DllName: 'libpython2.6.so'; RegVersion: '2.6'; APIVersion: 1013),
124+
(DllName: 'libpython2.7.so'; RegVersion: '2.7'; APIVersion: 1013),
125+
(DllName: 'libpython3.2.so'; RegVersion: '3.2'; APIVersion: 1013),
126+
(DllName: 'libpython3.3.so'; RegVersion: '3.3'; APIVersion: 1013),
127+
(DllName: 'libpython3.4.so'; RegVersion: '3.4'; APIVersion: 1013),
128+
(DllName: 'libpython3.5.so'; RegVersion: '3.5'; APIVersion: 1013),
129+
(DllName: 'libpython3.6.so'; RegVersion: '3.6'; APIVersion: 1013),
130+
(DllName: 'libpython3.7.so'; RegVersion: '3.7'; APIVersion: 1013),
131+
(DllName: 'libpython3.8.so'; RegVersion: '3.8'; APIVersion: 1013)
133132
);
134133
{$ENDIF}
135134
{$IFDEF DARWIN}
136135
PYTHON_KNOWN_VERSIONS: array[1..10] of TPythonVersionProp =
137136
(
138-
(DllName: 'libpython2.5.dylib'; RegVersion: '2.5'; APIVersion: 1013; CanUseLatest: True),
139-
(DllName: 'libpython2.6.dylib'; RegVersion: '2.6'; APIVersion: 1013; CanUseLatest: True),
140-
(DllName: 'libpython2.7.dylib'; RegVersion: '2.7'; APIVersion: 1013; CanUseLatest: True),
141-
(DllName: 'libpython3.2.dylib'; RegVersion: '3.2'; APIVersion: 1013; CanUseLatest: True),
142-
(DllName: 'libpython3.3.dylib'; RegVersion: '3.3'; APIVersion: 1013; CanUseLatest: True),
143-
(DllName: 'libpython3.4.dylib'; RegVersion: '3.4'; APIVersion: 1013; CanUseLatest: True),
144-
(DllName: 'libpython3.5.dylib'; RegVersion: '3.5'; APIVersion: 1013; CanUseLatest: True),
145-
(DllName: 'libpython3.6.dylib'; RegVersion: '3.6'; APIVersion: 1013; CanUseLatest: True),
146-
(DllName: 'libpython3.7.dylib'; RegVersion: '3.7'; APIVersion: 1013; CanUseLatest: True),
147-
(DllName: 'libpython3.8.dylib'; RegVersion: '3.8'; APIVersion: 1013; CanUseLatest: True)
137+
(DllName: 'libpython2.5.dylib'; RegVersion: '2.5'; APIVersion: 1013),
138+
(DllName: 'libpython2.6.dylib'; RegVersion: '2.6'; APIVersion: 1013),
139+
(DllName: 'libpython2.7.dylib'; RegVersion: '2.7'; APIVersion: 1013),
140+
(DllName: 'libpython3.2.dylib'; RegVersion: '3.2'; APIVersion: 1013),
141+
(DllName: 'libpython3.3.dylib'; RegVersion: '3.3'; APIVersion: 1013),
142+
(DllName: 'libpython3.4.dylib'; RegVersion: '3.4'; APIVersion: 1013),
143+
(DllName: 'libpython3.5.dylib'; RegVersion: '3.5'; APIVersion: 1013),
144+
(DllName: 'libpython3.6.dylib'; RegVersion: '3.6'; APIVersion: 1013),
145+
(DllName: 'libpython3.7.dylib'; RegVersion: '3.7'; APIVersion: 1013),
146+
(DllName: 'libpython3.8.dylib'; RegVersion: '3.8'; APIVersion: 1013)
148147
);
149148
{$endif}
150-
{$IFDEF PYTHON25}
151-
COMPILED_FOR_PYTHON_VERSION_INDEX = 1;
152-
{$ENDIF}
153-
{$IFDEF PYTHON26}
154-
COMPILED_FOR_PYTHON_VERSION_INDEX = 2;
155-
{$ENDIF}
156-
{$IFDEF PYTHON27}
157-
COMPILED_FOR_PYTHON_VERSION_INDEX = 3;
158-
{$ENDIF}
159-
{$IFDEF PYTHON32}
160-
COMPILED_FOR_PYTHON_VERSION_INDEX = 4;
161-
{$ENDIF}
162-
{$IFDEF PYTHON33}
163-
COMPILED_FOR_PYTHON_VERSION_INDEX = 5;
164-
{$ENDIF}
165-
{$IFDEF PYTHON34}
166-
COMPILED_FOR_PYTHON_VERSION_INDEX = 6;
167-
{$ENDIF}
168-
{$IFDEF PYTHON35}
169-
COMPILED_FOR_PYTHON_VERSION_INDEX = 7;
170-
{$ENDIF}
171-
{$IFDEF PYTHON36}
172-
COMPILED_FOR_PYTHON_VERSION_INDEX = 8;
173-
{$ENDIF}
174-
{$IFDEF PYTHON37}
175-
COMPILED_FOR_PYTHON_VERSION_INDEX = 9;
176-
{$ENDIF}
177-
{$IFDEF PYTHON38}
178-
COMPILED_FOR_PYTHON_VERSION_INDEX = 10;
179-
{$ENDIF}
149+
150+
COMPILED_FOR_PYTHON_VERSION_INDEX = High(PYTHON_KNOWN_VERSIONS);
151+
180152
PYT_METHOD_BUFFER_INCREASE = 10;
181153
PYT_MEMBER_BUFFER_INCREASE = 10;
182154
PYT_GETSET_BUFFER_INCREASE = 10;
@@ -4747,7 +4719,7 @@ procedure TPythonEngine.DoOpenDll(const aDllName : string);
47474719
i : Integer;
47484720
begin
47494721
if UseLastKnownVersion then
4750-
for i:= Integer(COMPILED_FOR_PYTHON_VERSION_INDEX) to High(PYTHON_KNOWN_VERSIONS) do
4722+
for i:= Integer(COMPILED_FOR_PYTHON_VERSION_INDEX) downto 0 do
47514723
begin
47524724
RegVersion := PYTHON_KNOWN_VERSIONS[i].RegVersion;
47534725
FDLLHandle := SafeLoadLibrary(GetDllPath+PYTHON_KNOWN_VERSIONS[i].DllName);
@@ -4757,8 +4729,6 @@ procedure TPythonEngine.DoOpenDll(const aDllName : string);
47574729
APIVersion := PYTHON_KNOWN_VERSIONS[i].APIVersion;
47584730
Exit;
47594731
end;
4760-
if not PYTHON_KNOWN_VERSIONS[i].CanUseLatest then
4761-
Break;
47624732
end
47634733
else
47644734
RegVersion := GetPythonVersionFromDLLName(aDllName);

0 commit comments

Comments
 (0)