htcondor 25.1.0__cp38-cp38-manylinux_2_28_aarch64.whl → 25.2.1__cp38-cp38-manylinux_2_28_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of htcondor might be problematic. Click here for more details.

Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: htcondor
3
- Version: 25.1.0
3
+ Version: 25.2.1
4
4
  Summary: HTCondor Python bindings
5
5
  Home-page: http://htcondor.org/
6
6
  Author: The HTCondor Project
@@ -3,19 +3,19 @@ classad2/_class_ad.py,sha256=-C1hW5NRkg0GwBHGqrPp73yvRXrw4WCeh8RfYqeu5yw,15235
3
3
  classad2/_expr_tree.py,sha256=DckBEItpSdBkyX38Oa-_z0yBEsg7GbOHP6W4yWMsTTI,4700
4
4
  classad2/_parser_type.py,sha256=AfiZZ-pRoxLC6DJRmVA2ttI9pX5UhiCDJtt_6UTmH1E,654
5
5
  classad2/_value.py,sha256=R5skf2GIXLoqa8ngeZOWqzUnwwbe_uLHvRVY5kOTHSs,219
6
- classad2/classad2_impl.abi3.so,sha256=A5CQEHpsVb4x3OFKuOJBEoF9zULyiBdi91823j45-RE,1454737
6
+ classad2/classad2_impl.abi3.so,sha256=RoZC4qyH0_aAUWk7su_z260Xrup7_QiIC6-TK4t_BNo,1455305
7
7
  classad3/ClassAd.py,sha256=c3i86QEcQcLPbF6gB8Yo4U19nRFy7xf_5wilAAfuLtg,8235
8
8
  classad3/Expression.py,sha256=_Gj9VaBE9Iq-91ROpOmxYaE-VrDOAzs9g34lIP1Fs3g,3584
9
9
  classad3/__init__.py,sha256=kHH3eWogIUG_jpRXHwWvJGZ3zAPvrZk8Tl8bBAhEEY8,1570
10
- htcondor.libs/libSciTokens-d5b98c44.so.0.0.2,sha256=CdEKBQeQGlVya2ZvgdMKbhOAZn5oF97rdS8B4yF50JM,399721
10
+ htcondor.libs/libSciTokens-d5b98c44.so.0.0.2,sha256=OkT53stJN7LuNEtyyHm6rybIfTFzIRzBy5xcLRGO7FM,399721
11
11
  htcondor.libs/libbrotlicommon-b6e6c8bd.so.1.0.6,sha256=_B5anwC4bzb29Shq_l8USYARGAtrW1EUwebby8caUyM,197553
12
12
  htcondor.libs/libbrotlidec-5094ef0a.so.1.0.6,sha256=RM1YVlg7wchTccHvzrUwubok1CkZTM53CRw7T2Ov6yo,198281
13
- htcondor.libs/libclassad-dbd4fdda.so.25.1.0,sha256=g9iLcuxwWIDOx_dyv8hLJywH1dX2vEFDS6jXF_WKMTs,16921985
13
+ htcondor.libs/libclassad-353a153a.so.25.2.1,sha256=b6VunBHHmP63aKgyj7xB201vlZX99KZPwKO3QnvYO78,16922273
14
14
  htcondor.libs/libcom_err-4b53f6ce.so.2.1,sha256=GdtF3jgePZjotDUKVW8JdbXuc-fr39R6YIINsvX8qWY,132169
15
- htcondor.libs/libcondor_utils_25_1_0-6b115079.so,sha256=C5po7kkA_EVcT4JiEt237fyBnfQBsco9vMdVClKUeUo,131759329
15
+ htcondor.libs/libcondor_utils_25_2_1-1b8ea241.so,sha256=lbMQu3dYhNVOOVZHdczA4e7AvajxcIJfZgp0JLGgY7g,132219729
16
16
  htcondor.libs/libcrypt-258f54d5.so.1.1.0,sha256=mA1Hga6a2NGy9gvlLPu_F20yzGLs-IiSDzR-mVdjbuI,198433
17
17
  htcondor.libs/libcrypto-3dc39733.so.1.1.1k,sha256=_iompPH3TAPEsA4B85pYGztLxEt3RLDKE13q56BlyyM,2945609
18
- htcondor.libs/libcurl-37295c13.so.4.5.0,sha256=q6Nmr7uq5632vPsBOJpjnCp-ACq_TM9EiOF6gG_AH6g,730537
18
+ htcondor.libs/libcurl-723d0589.so.4.5.0,sha256=K1Qg-Hwy_DZs3RjOLdTl9y-n0kEGdoiYRpCJU-vKtcA,730537
19
19
  htcondor.libs/libgomp-a49a47f9.so.1.0.0,sha256=Q2Qt8EvfIPm0Ei0zbvPi5qSGxTbmFBWawOmBqQHVRTc,343345
20
20
  htcondor.libs/libgssapi_krb5-fe951f80.so.2.2,sha256=kQ1dHklTpLYm8TOCKr-6nsZhCDhkMcWUnSa8MtmcJk4,468689
21
21
  htcondor.libs/libidn2-1b2a13b7.so.0.3.6,sha256=EcpHyoq5qwMwcuinaXlv9_SCkTF_ydaO3wt7VPftphs,265025
@@ -64,7 +64,7 @@ htcondor2/_negotiator.py,sha256=ZmbYJSJgcy0r1nwuPT7FKWiHztwwVVcbAAIHay0wRSI,8221
64
64
  htcondor2/_param.py,sha256=hTrGFxuNbqW0BQ9AuoWNCzNsezblAJAR3iNt0TYk7PA,1018
65
65
  htcondor2/_query_opt.py,sha256=_qi5tU-7YFdS7iIYBP1-kCAQzJoap1rE0WZikgIiIJ8,1249
66
66
  htcondor2/_remote_param.py,sha256=c0t_oJhWK0GsT_PVhQp4hhEx5B6SsmEfT2dZ08n2aTQ,2745
67
- htcondor2/_schedd.py,sha256=8kcbOdykbAWPSi6Hc5XYiMwf0RLeDT3W_hdOi-FC-ZQ,34955
67
+ htcondor2/_schedd.py,sha256=g3CKOQyDngWj39neHOWNoLmxlT6rAEDOy0qruNDWJOE,41730
68
68
  htcondor2/_security_context.py,sha256=UkhzTMPb2B9gcACiQEw9aHVOS7Lv1xnSXKi2WpOeTKc,692
69
69
  htcondor2/_startd.py,sha256=OqGtV3bv80WCasBoAp--J9ZkG5uHlZr6Q1fCHEscjMc,6063
70
70
  htcondor2/_submit.py,sha256=5OrJfrSi-2uk4LvgJCoPsuNRzB-_e28a73gHekrK2s8,16724
@@ -72,8 +72,8 @@ htcondor2/_submit_method.py,sha256=B_lmrg-sAu6r_cLOFsaRXGowQr0Vje492otq1tAPNhQ,7
72
72
  htcondor2/_submit_result.py,sha256=IV6SQeGpp0tXubSra8n69LN84yYDVKUZR8gHVbWmmkg,1710
73
73
  htcondor2/_subsystem_type.py,sha256=E0aq5aIDxYQ-SVbUsXJo7-CcVhV2KGkhCHGs7ydPnek,872
74
74
  htcondor2/_transaction_flag.py,sha256=JEFIs0hUa_t5pGYFHvJhGJW7xvQLvksdfjUelnY0Y2E,1129
75
- htcondor2/htcondor2_impl.abi3.so,sha256=eehhiPdeJY99jI1cBltDY-0iUNEu3BJhyZ-C907gUL4,4349345
76
- htcondor2/personal.py,sha256=BNdyyxufaO3zhHmap00bLLkWJBI1EGfaI1o1hKAfJGk,25418
75
+ htcondor2/htcondor2_impl.abi3.so,sha256=v4ykw1z5DMCuU2RoNd5HFvTA_STV9L9sqg0vnPMYvcA,4415497
76
+ htcondor2/personal.py,sha256=-Ae6JLvYJTwQIMsSngy_hQnjJkew3shgu8CsXHh1FGc,25464
77
77
  htcondor2/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
78
  htcondor2/_utils/ansi.py,sha256=cmL0GeEJ35BvGeVtfvFA7bI6Kk5s8OKajKPUPtHYMZ4,4243
79
79
  htcondor2/_utils/keyboard.py,sha256=jcI0fNIxNGwi91DvZOfN2e3fNzdDZPiudBSiOa3wF54,3289
@@ -89,7 +89,7 @@ htcondor2/dags/walk_order.py,sha256=nKRNwDZ2cTSlCsVXmRjStoSecgpuD8v2M9LgY8BNlrY,
89
89
  htcondor2/dags/writer.py,sha256=O388tmu-gUyd9jyyhCUpXB9hx68tvO7u_oAeQdSdfCU,12167
90
90
  htcondor2/htchirp/__init__.py,sha256=4u5l9a7xMB3CJtjThQ-maXXt5l4hN8AagCpqfO_UKxg,729
91
91
  htcondor2/htchirp/htchirp.py,sha256=xiKXhmzuftf69-_FMV0SYdg45lX97cJDChRFghglZ6k,50482
92
- htcondor-25.1.0.dist-info/METADATA,sha256=_iIRH6iTLtZuEmKMtv0mdeknBtqjxgGoCF8cpOBXfKs,1422
93
- htcondor-25.1.0.dist-info/WHEEL,sha256=3GGa6FlIvGUkpuLhOfg96M2MF0n649Kc0yBbTE_l4wU,112
94
- htcondor-25.1.0.dist-info/top_level.txt,sha256=v4Qf76MjPw5Ld-EyM6v3J6nSJDLUr3XGMf-HiXKegK0,78
95
- htcondor-25.1.0.dist-info/RECORD,,
92
+ htcondor-25.2.1.dist-info/METADATA,sha256=jqmB45H7_ez2aXAkGeSKojrg0eXLeECc0ryQQffZraY,1422
93
+ htcondor-25.2.1.dist-info/WHEEL,sha256=3GGa6FlIvGUkpuLhOfg96M2MF0n649Kc0yBbTE_l4wU,112
94
+ htcondor-25.2.1.dist-info/top_level.txt,sha256=v4Qf76MjPw5Ld-EyM6v3J6nSJDLUr3XGMf-HiXKegK0,78
95
+ htcondor-25.2.1.dist-info/RECORD,,
htcondor2/_schedd.py CHANGED
@@ -31,6 +31,8 @@ from .htcondor2_impl import (
31
31
  _schedd_userrec_query,
32
32
  _schedd_act_on_job_ids,
33
33
  _schedd_act_on_job_constraint,
34
+ _schedd_act_on_userrec_list,
35
+ _schedd_act_on_userrec_constraint,
34
36
  _schedd_edit_job_ids,
35
37
  _schedd_edit_job_constraint,
36
38
  _schedd_reschedule,
@@ -98,6 +100,30 @@ def job_spec_hack(
98
100
  else:
99
101
  raise TypeError("The job_spec must be list of strings, a string, an int, or an ExprTree." );
100
102
 
103
+ # helper method that routes various types of userrec_spec
104
+ # to the correct userrec act function
105
+ def userrec_act_dispatcher(
106
+ addr : str,
107
+ userrec_spec : Union[List[str], str, classad.ExprTree, List[classad.ClassAd] ],
108
+ f_name_list : callable,
109
+ f_constraint : callable,
110
+ args : list,
111
+ ):
112
+ if isinstance(userrec_spec, list):
113
+ if all([isinstance(i, str) for i in userrec_spec]):
114
+ return f_name_list(addr, userrec_spec, *args)
115
+ elif all([isinstance(i, classad.ClassAd) for i in userrec_spec]):
116
+ return f_name_list(addr, userrec_spec, args[0] + 0x20000, args[1])
117
+ else:
118
+ raise TypeError("All elements of the userrec list must be strings or classads");
119
+ elif isinstance(userrec_spec, classad.ExprTree):
120
+ job_spec_string = str(userrec_spec)
121
+ return f_constraint(addr, job_spec_string, *args)
122
+ elif isinstance(userrec_spec, str):
123
+ return f_name_list(addr, [userrec_spec], *args);
124
+ else:
125
+ raise TypeError("The userrec_spec must be list of strings, a list of ClassAd, a string, or an ExprTree." );
126
+
101
127
 
102
128
  class Schedd():
103
129
  '''
@@ -225,7 +251,7 @@ class Schedd():
225
251
  :param limit: The maximum number of project ads to return. The default
226
252
  (``-1``) is to return all ads.
227
253
  '''
228
- project_flag = 1 # 0=default, 1=project, 2=user, 3=both
254
+ project_flag = 1 # 0=default/user, 1=project
229
255
  results = _schedd_userrec_query(self._addr, str(constraint), projection, int(limit), project_flag)
230
256
  if callback is None:
231
257
  return results
@@ -294,6 +320,150 @@ class Schedd():
294
320
 
295
321
  return pyResult
296
322
 
323
+ def addUserRec(self,
324
+ user_spec : Union[List[str], str, List[classad.ClassAd] ],
325
+ ) -> classad.ClassAd:
326
+ """
327
+ Add User record(s) to the *condor_schedd* daemon if a User
328
+ record with the given name does not already exist.
329
+
330
+ :param user_spec: Which user(s) to add. A :class:`str`
331
+ of the username, a :class:`list` of such
332
+ strings, or a list of the initial User records in :class:`classad2.ClassAd` form.
333
+ :return: A ClassAd describing the changes made. This
334
+ ClassAd is currently undocumented.
335
+ """
336
+
337
+ result = userrec_act_dispatcher(self._addr, user_spec,
338
+ _schedd_act_on_userrec_list, _schedd_act_on_userrec_constraint,
339
+ (0x10000 + 541, None)
340
+ )
341
+ return result;
342
+
343
+ def enableUserRec(self,
344
+ user_spec : Union[List[str], str, classad.ExprTree],
345
+ ) -> classad.ClassAd:
346
+ """
347
+ Enable User record(s) to the *condor_schedd* daemon.
348
+
349
+ :param user_spec: Which user(s) to enable. A :class:`str`
350
+ of the username, a :class:`list` of such
351
+ strings, or a :class:`classad2.ExprTree` constraint.
352
+ When a constraint is used, only User records that
353
+ match the constraint will be enabled.
354
+ :return: A ClassAd describing the changes made. This
355
+ ClassAd is currently undocumented.
356
+ """
357
+
358
+ result = userrec_act_dispatcher(self._addr, user_spec,
359
+ _schedd_act_on_userrec_list, _schedd_act_on_userrec_constraint,
360
+ (541, None)
361
+ )
362
+ return result;
363
+
364
+ def disableUserRec(self,
365
+ user_spec : Union[List[str], str, classad.ExprTree],
366
+ reason : str = None
367
+ ) -> classad.ClassAd:
368
+ """
369
+ Disable User record(s) in the *condor_schedd* daemon.
370
+
371
+ :param user_spec: Which user(s) to disable. A :class:`str`
372
+ of the username, a :class:`list` of such
373
+ strings, or a :class:`classad2.ExprTree` constraint.
374
+ When a constraint is used, only User records that match
375
+ the constraint will be disabled.
376
+ :param reason: A free-form justification. Defaults to
377
+ "Python-initiated action".
378
+ :return: A ClassAd describing the changes made. This
379
+ ClassAd is currently undocumented.
380
+ """
381
+
382
+ if reason is None:
383
+ reason = "Python-initiated action"
384
+
385
+ result = userrec_act_dispatcher(self._addr, user_spec,
386
+ _schedd_act_on_userrec_list, _schedd_act_on_userrec_constraint,
387
+ (542, reason)
388
+ )
389
+ return result;
390
+
391
+ def removeUserRec(self,
392
+ user_spec : Union[List[str], str, classad.ExprTree],
393
+ reason : str = None
394
+ ) -> classad.ClassAd:
395
+ """
396
+ Remove User record(s) in the *condor_schedd* daemon.
397
+
398
+ :param user_spec: Which user(s) to remove. A :class:`str`
399
+ of the username, a :class:`list` of such
400
+ strings, or a :class:`classad2.ExprTree` constraint.
401
+ When a constraint is used, only User records that match
402
+ the constraint will be removed.
403
+ :param reason: A free-form justification that is used when
404
+ the record cannot be removed. Defaults to
405
+ "Python-initiated action".
406
+ :return: A ClassAd describing the changes made. This
407
+ ClassAd is currently undocumented.
408
+ """
409
+
410
+ if reason is None:
411
+ reason = "Python-initiated action"
412
+
413
+ result = userrec_act_dispatcher(self._addr, user_spec,
414
+ _schedd_act_on_userrec_list, _schedd_act_on_userrec_constraint,
415
+ (549, reason)
416
+ )
417
+ return result;
418
+
419
+
420
+ def addProjectRec(self,
421
+ project_spec : Union[List[str], str, List[classad.ClassAd] ],
422
+ ) -> classad.ClassAd:
423
+ """
424
+ Add Project record(s) to the *condor_schedd* daemon.
425
+
426
+ :param project_spec: Which projects(s) to add. A :class:`str`
427
+ of the project name, a :class:`list` of such
428
+ strings, or a list of the initial Project records in :class:`classad2.ClassAd` form.
429
+ :return: A ClassAd describing the changes made. This
430
+ ClassAd is currently undocumented.
431
+ """
432
+
433
+ result = userrec_act_dispatcher(self._addr, project_spec,
434
+ _schedd_act_on_userrec_list, _schedd_act_on_userrec_constraint,
435
+ (0x10000 + 0x80000 + 541, None)
436
+ )
437
+ return result;
438
+
439
+ def removeProjectRec(self,
440
+ user_spec : Union[List[str], str, classad.ExprTree],
441
+ reason : str = None
442
+ ) -> classad.ClassAd:
443
+ """
444
+ Remove Project record(s) in the *condor_schedd* daemon.
445
+
446
+ :param Project_spec: Which projects(s) to remove. A :class:`str`
447
+ of the project name, a :class:`list` of such
448
+ strings, or a :class:`classad2.ExprTree` constraint.
449
+ When a constraint is used, only User records that match
450
+ the constraint will be removed.
451
+ :param reason: A free-form justification that is used when
452
+ the record cannot be removed. Defaults to
453
+ "Python-initiated action".
454
+ :return: A ClassAd describing the changes made. This
455
+ ClassAd is currently undocumented.
456
+ """
457
+
458
+ if reason is None:
459
+ reason = "Python-initiated action"
460
+
461
+ result = userrec_act_dispatcher(self._addr, user_spec,
462
+ _schedd_act_on_userrec_list, _schedd_act_on_userrec_constraint,
463
+ (0x80000 + 549, reason)
464
+ )
465
+ return result;
466
+
297
467
 
298
468
  # In version 1, edit(ClassAd) and edit_multiple() weren't documented,
299
469
  # so they're not implemented in version 2.
Binary file
htcondor2/personal.py CHANGED
@@ -21,6 +21,7 @@ import os
21
21
  import shlex
22
22
  import signal
23
23
  import subprocess
24
+ import sys
24
25
  import textwrap
25
26
  import time
26
27
  from pathlib import Path
@@ -384,8 +385,8 @@ class PersonalPool:
384
385
  "SEC_PASSWORD_DIRECTORY": self.passwords_dir.as_posix(),
385
386
  "SEC_TOKEN_DIRECTORY": self.tokens_dir.as_posix(),
386
387
  "SEC_TOKEN_SYSTEM_DIRECTORY": self.system_tokens_dir.as_posix(),
387
- "MAIL": "/bin/true",
388
- "SENDMAIL": "/bin/true",
388
+ "MAIL": "/usr/bin/true" if sys.platform == "darwin" else "/bin/true",
389
+ "SENDMAIL": "/usr/bin/true" if sys.platform == "darwin" else "/bin/true",
389
390
  }
390
391
 
391
392
  param_lines += ["# BASE PARAMS"]
@@ -627,9 +628,6 @@ class PersonalPool:
627
628
  )
628
629
 
629
630
  def _kill_condor_system(self):
630
- if self._condor_master_is_alive():
631
- return
632
-
633
631
  pids = self._daemon_pids()
634
632
  for pid in pids:
635
633
  os.kill(pid, signal.SIGKILL)