v2.0.0 Release Plans #1459

Description

@laurenyu

With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.

I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.

6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
7/28/20 edit: Updated last two dates in timeline.

Timeline

We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.

TimeframeMilestone
5/8/20create branch for v2 development
5/18/20start including warnings in v1 for upcoming changes
mid Junestart releasing release candidates
7/29/20last v1 release. After this, merges to master are limited to critical/urgent changes.
8/3/20v2.0.0 release

Major Changes

DescriptionIssue
Deprecate Python 2 support for the Python SDK#1461
Deprecate TensorFlow "legacy mode" (in favor of "script mode")#1462
Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version.#1465
Create new resources each time with deploy() and transformer()#1470
Create a single module for generating image URIs#1464
Separate the functionality of printing logs from attach()#1405
Refactor Session#1463
Create a script for upgrading from v1 to v2 code#1478
Move SerDe to dedicated modules#1694

Smaller Changes

DescriptionIssue
Remove scipy from required dependencies#1471
Clean up util modules#1466
Rename unclear/inconsistent names#1473
Remove **kwargs#1474
Deprecate CLI#1476
Deprecate unused parameters#1475

Other Possibilities

This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.

Project Board

https://github.com/aws/sagemaker-python-sdk/projects/1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      v2.0.0 Release Plans #1459

      Description

      @laurenyu

      With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.

      I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.

      6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
      7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
      7/28/20 edit: Updated last two dates in timeline.

      Timeline

      We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.

      TimeframeMilestone
      5/8/20create branch for v2 development
      5/18/20start including warnings in v1 for upcoming changes
      mid Junestart releasing release candidates
      7/29/20last v1 release. After this, merges to master are limited to critical/urgent changes.
      8/3/20v2.0.0 release

      Major Changes

      DescriptionIssue
      Deprecate Python 2 support for the Python SDK#1461
      Deprecate TensorFlow "legacy mode" (in favor of "script mode")#1462
      Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version.#1465
      Create new resources each time with deploy() and transformer()#1470
      Create a single module for generating image URIs#1464
      Separate the functionality of printing logs from attach()#1405
      Refactor Session#1463
      Create a script for upgrading from v1 to v2 code#1478
      Move SerDe to dedicated modules#1694

      Smaller Changes

      DescriptionIssue
      Remove scipy from required dependencies#1471
      Clean up util modules#1466
      Rename unclear/inconsistent names#1473
      Remove **kwargs#1474
      Deprecate CLI#1476
      Deprecate unused parameters#1475

      Other Possibilities

      This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.

      Project Board

      https://github.com/aws/sagemaker-python-sdk/projects/1

      Metadata

      Metadata

      Assignees

      No one assigned

        Type

        No type

        Projects

        No projects

          Milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          v2.0.0 Release Plans #1459

          Description

          @laurenyu

          With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.

          I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.

          6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
          7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
          7/28/20 edit: Updated last two dates in timeline.

          Timeline

          We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.

          TimeframeMilestone
          5/8/20create branch for v2 development
          5/18/20start including warnings in v1 for upcoming changes
          mid Junestart releasing release candidates
          7/29/20last v1 release. After this, merges to master are limited to critical/urgent changes.
          8/3/20v2.0.0 release

          Major Changes

          DescriptionIssue
          Deprecate Python 2 support for the Python SDK#1461
          Deprecate TensorFlow "legacy mode" (in favor of "script mode")#1462
          Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version.#1465
          Create new resources each time with deploy() and transformer()#1470
          Create a single module for generating image URIs#1464
          Separate the functionality of printing logs from attach()#1405
          Refactor Session#1463
          Create a script for upgrading from v1 to v2 code#1478
          Move SerDe to dedicated modules#1694

          Smaller Changes

          DescriptionIssue
          Remove scipy from required dependencies#1471
          Clean up util modules#1466
          Rename unclear/inconsistent names#1473
          Remove **kwargs#1474
          Deprecate CLI#1476
          Deprecate unused parameters#1475

          Other Possibilities

          This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.

          Project Board

          https://github.com/aws/sagemaker-python-sdk/projects/1

          Metadata

          Metadata

          Assignees

          No one assigned

            Type

            No type

            Projects

            No projects

              Milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              v2.0.0 Release Plans #1459

              Description

              @laurenyu

              With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.

              I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.

              6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
              7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
              7/28/20 edit: Updated last two dates in timeline.

              Timeline

              We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.

              TimeframeMilestone
              5/8/20create branch for v2 development
              5/18/20start including warnings in v1 for upcoming changes
              mid Junestart releasing release candidates
              7/29/20last v1 release. After this, merges to master are limited to critical/urgent changes.
              8/3/20v2.0.0 release

              Major Changes

              DescriptionIssue
              Deprecate Python 2 support for the Python SDK#1461
              Deprecate TensorFlow "legacy mode" (in favor of "script mode")#1462
              Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version.#1465
              Create new resources each time with deploy() and transformer()#1470
              Create a single module for generating image URIs#1464
              Separate the functionality of printing logs from attach()#1405
              Refactor Session#1463
              Create a script for upgrading from v1 to v2 code#1478
              Move SerDe to dedicated modules#1694

              Smaller Changes

              DescriptionIssue
              Remove scipy from required dependencies#1471
              Clean up util modules#1466
              Rename unclear/inconsistent names#1473
              Remove **kwargs#1474
              Deprecate CLI#1476
              Deprecate unused parameters#1475

              Other Possibilities

              This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.

              Project Board

              https://github.com/aws/sagemaker-python-sdk/projects/1

              Metadata

              Metadata

              Assignees

              No one assigned

                Type

                No type

                Projects

                No projects

                  Milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  v2.0.0 Release Plans #1459

                  Description

                  @laurenyu

                  With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.

                  I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.

                  6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
                  7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
                  7/28/20 edit: Updated last two dates in timeline.

                  Timeline

                  We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.

                  TimeframeMilestone
                  5/8/20create branch for v2 development
                  5/18/20start including warnings in v1 for upcoming changes
                  mid Junestart releasing release candidates
                  7/29/20last v1 release. After this, merges to master are limited to critical/urgent changes.
                  8/3/20v2.0.0 release

                  Major Changes

                  DescriptionIssue
                  Deprecate Python 2 support for the Python SDK#1461
                  Deprecate TensorFlow "legacy mode" (in favor of "script mode")#1462
                  Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version.#1465
                  Create new resources each time with deploy() and transformer()#1470
                  Create a single module for generating image URIs#1464
                  Separate the functionality of printing logs from attach()#1405
                  Refactor Session#1463
                  Create a script for upgrading from v1 to v2 code#1478
                  Move SerDe to dedicated modules#1694

                  Smaller Changes

                  DescriptionIssue
                  Remove scipy from required dependencies#1471
                  Clean up util modules#1466
                  Rename unclear/inconsistent names#1473
                  Remove **kwargs#1474
                  Deprecate CLI#1476
                  Deprecate unused parameters#1475

                  Other Possibilities

                  This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.

                  Project Board

                  https://github.com/aws/sagemaker-python-sdk/projects/1

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      v2.0.0 Release Plans #1459

                      Description

                      @laurenyu

                      With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.

                      I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.

                      6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
                      7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
                      7/28/20 edit: Updated last two dates in timeline.

                      Timeline

                      We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.

                      TimeframeMilestone
                      5/8/20create branch for v2 development
                      5/18/20start including warnings in v1 for upcoming changes
                      mid Junestart releasing release candidates
                      7/29/20last v1 release. After this, merges to master are limited to critical/urgent changes.
                      8/3/20v2.0.0 release

                      Major Changes

                      DescriptionIssue
                      Deprecate Python 2 support for the Python SDK#1461
                      Deprecate TensorFlow "legacy mode" (in favor of "script mode")#1462
                      Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version.#1465
                      Create new resources each time with deploy() and transformer()#1470
                      Create a single module for generating image URIs#1464
                      Separate the functionality of printing logs from attach()#1405
                      Refactor Session#1463
                      Create a script for upgrading from v1 to v2 code#1478
                      Move SerDe to dedicated modules#1694

                      Smaller Changes

                      DescriptionIssue
                      Remove scipy from required dependencies#1471
                      Clean up util modules#1466
                      Rename unclear/inconsistent names#1473
                      Remove **kwargs#1474
                      Deprecate CLI#1476
                      Deprecate unused parameters#1475

                      Other Possibilities

                      This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.

                      Project Board

                      https://github.com/aws/sagemaker-python-sdk/projects/1

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          v2.0.0 Release Plans #1459

                          Description

                          @laurenyu

                          With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.

                          I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.

                          6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
                          7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
                          7/28/20 edit: Updated last two dates in timeline.

                          Timeline

                          We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.

                          TimeframeMilestone
                          5/8/20create branch for v2 development
                          5/18/20start including warnings in v1 for upcoming changes
                          mid Junestart releasing release candidates
                          7/29/20last v1 release. After this, merges to master are limited to critical/urgent changes.
                          8/3/20v2.0.0 release

                          Major Changes

                          DescriptionIssue
                          Deprecate Python 2 support for the Python SDK#1461
                          Deprecate TensorFlow "legacy mode" (in favor of "script mode")#1462
                          Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version.#1465
                          Create new resources each time with deploy() and transformer()#1470
                          Create a single module for generating image URIs#1464
                          Separate the functionality of printing logs from attach()#1405
                          Refactor Session#1463
                          Create a script for upgrading from v1 to v2 code#1478
                          Move SerDe to dedicated modules#1694

                          Smaller Changes

                          DescriptionIssue
                          Remove scipy from required dependencies#1471
                          Clean up util modules#1466
                          Rename unclear/inconsistent names#1473
                          Remove **kwargs#1474
                          Deprecate CLI#1476
                          Deprecate unused parameters#1475

                          Other Possibilities

                          This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.

                          Project Board

                          https://github.com/aws/sagemaker-python-sdk/projects/1

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              v2.0.0 Release Plans #1459

                              Description

                              @laurenyu

                              With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.

                              I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.

                              6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
                              7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
                              7/28/20 edit: Updated last two dates in timeline.

                              Timeline

                              We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.

                              TimeframeMilestone
                              5/8/20create branch for v2 development
                              5/18/20start including warnings in v1 for upcoming changes
                              mid Junestart releasing release candidates
                              7/29/20last v1 release. After this, merges to master are limited to critical/urgent changes.
                              8/3/20v2.0.0 release

                              Major Changes

                              DescriptionIssue
                              Deprecate Python 2 support for the Python SDK#1461
                              Deprecate TensorFlow "legacy mode" (in favor of "script mode")#1462
                              Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version.#1465
                              Create new resources each time with deploy() and transformer()#1470
                              Create a single module for generating image URIs#1464
                              Separate the functionality of printing logs from attach()#1405
                              Refactor Session#1463
                              Create a script for upgrading from v1 to v2 code#1478
                              Move SerDe to dedicated modules#1694

                              Smaller Changes

                              DescriptionIssue
                              Remove scipy from required dependencies#1471
                              Clean up util modules#1466
                              Rename unclear/inconsistent names#1473
                              Remove **kwargs#1474
                              Deprecate CLI#1476
                              Deprecate unused parameters#1475

                              Other Possibilities

                              This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.

                              Project Board

                              https://github.com/aws/sagemaker-python-sdk/projects/1

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions