@@ -29,8 +29,11 @@ def pymanager(self):
2929 def latest_python2 (self ):
3030 return self .python2 ().filter (is_latest = True )
3131
32- def latest_python3 (self ):
33- return self .python3 ().filter (is_latest = True )
32+ def latest_python3 (self , minor_version : int | None = None ):
33+ if minor_version is None :
34+ return self .python3 ().filter (is_latest = True )
35+ pattern = rf"^Python 3\.{ minor_version } \."
36+ return self .python3 ().filter (name__regex = pattern ).order_by ("-release_date" )
3437
3538 def latest_pymanager (self ):
3639 return self .pymanager ().filter (is_latest = True )
@@ -44,22 +47,10 @@ def released(self):
4447
4548class ReleaseManager (Manager .from_queryset (ReleaseQuerySet )):
4649 def latest_python2 (self ):
47- qs = self .get_queryset ().latest_python2 ()
48- if qs :
49- return qs [0 ]
50- else :
51- return None
52-
53- def latest_python3 (self ):
54- qs = self .get_queryset ().latest_python3 ()
55- if qs :
56- return qs [0 ]
57- else :
58- return None
50+ return self .get_queryset ().latest_python2 ().first ()
51+
52+ def latest_python3 (self , minor_version : int | None = None ):
53+ return self .get_queryset ().latest_python3 (minor_version ).first ()
5954
6055 def latest_pymanager (self ):
61- qs = self .get_queryset ().latest_pymanager ()
62- if qs :
63- return qs [0 ]
64- else :
65- return None
56+ return self .get_queryset ().latest_pymanager ().first ()
0 commit comments