@@ -624,11 +624,22 @@ namespace :py do
624624 bump_nightly = arguments [ :version ] === 'nightly'
625625 old_version = python_version
626626 new_version = nil
627- if bump_nightly && old_version . include? ( 'nightly' )
628- new_version = old_version . gsub ( 'nightly' , "#{ Time . now . strftime ( "%Y%m%d%H%M" ) } " )
627+
628+ # There are three cases we want to deal with:
629+ # 1. Switching from a release build to a nightly one
630+ # 2. Updating a nightly build for the next nightly build
631+ # 3. Switching from nightlies to a release build.
632+ # According to PEP440, the way to indicate a nightly build is `M.m.v.devN`
633+ # Where `N` is sorted numerically. That means we can create the dev
634+ # version number from today's date.
635+
636+ if bump_nightly && old_version . include? ( '.dev' )
637+ new_version = old_version . gsub ( /\d +$/ , "#{ Time . now . strftime ( "%Y%m%d%H%M" ) } " )
638+ elsif bump_nightly
639+ new_version = old_version + ".dev#{ Time . now . strftime ( "%Y%m%d%H%M" ) } "
629640 else
630- new_version = updated_version ( old_version , arguments [ :version ] )
631- new_version += '.nightly' unless old_version . include? ( 'nightly' )
641+ new_version = updated_version ( old_version . gsub ( / \. dev \d +$/ , '' ) , arguments [ :version ] )
642+ puts "Calculated new version to be #{ new_version } "
632643 end
633644
634645 [ 'py/setup.py' ,
@@ -1154,6 +1165,7 @@ task :create_release_notes do
11541165end
11551166
11561167def updated_version ( current , desired = nil )
1168+ puts "Calculating "
11571169 version = desired ? desired . split ( '.' ) : current . split ( /\. |-/ )
11581170 if desired
11591171 # Allows user to pass in only major/minor versions
0 commit comments