Hello community,

here is the log from the commit of package python-jupyter-core for 
openSUSE:Factory checked in at 2020-02-29 21:18:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter-core (Old)
 and      /work/SRC/openSUSE:Factory/.python-jupyter-core.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-jupyter-core"

Sat Feb 29 21:18:25 2020 rev:2 rq:778848 version:4.6.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter-core/python-jupyter-core.changes  
2019-11-22 10:22:33.953323961 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-jupyter-core.new.26092/python-jupyter-core.changes
       2020-02-29 21:18:28.586048430 +0100
@@ -1,0 +2,19 @@
+Mon Feb 24 15:37:51 UTC 2020 - Todd R <[email protected]>
+
+- Update to 4.6.3
+  * Changed windows secure_write path to skip all filesystem
+    permission checks when running in insecure mode. Too many
+    exception paths existed for mounted file systems to reliably
+    try to set them before opting out with the insecure write
+    pattern.
+- Update to 4.6.2
+  * Add ability to allow insecure writes with
+    JUPYTER_ALLOW_INSECURE_WRITES environement variable.
+  * Docs typo and build fixes
+  * Added python 3.7 and 3.8 builds to testing
+- Implement tests via multibuild
+- Drop doc subpackage.  This was only around to resolve dependency
+  cycles in testing, which the multibuild now does.  Keeping up
+  with rapid changes in readthedocs was becoming difficult.
+
+-------------------------------------------------------------------

Old:
----
  jupyter-core.pdf
  jupyter-core.zip
  jupyter_core-4.6.1.tar.gz
  python-jupyter-core-doc.changes
  python-jupyter-core-doc.spec

New:
----
  _multibuild
  jupyter_core-4.6.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-jupyter-core.spec ++++++
--- /var/tmp/diff_new_pack.Nrm9dy/_old  2020-02-29 21:18:29.486048000 +0100
+++ /var/tmp/diff_new_pack.Nrm9dy/_new  2020-02-29 21:18:29.486048000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-jupyter-core
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,10 +16,19 @@
 #
 
 
+%global flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == "test"
+%define psuffix -test
+%bcond_without test
+%else
+%define psuffix %{nil}
+%bcond_with test
+%endif
+
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define         oldpython python
-Name:           python-jupyter-core
-Version:        4.6.1
+Name:           python-jupyter-core%{psuffix}
+Version:        4.6.3
 Release:        0
 Summary:        Base package on which Jupyter projects rely
 License:        BSD-3-Clause
@@ -40,11 +49,17 @@
 Recommends:     python-ipython
 Provides:       python-jupyter_core = %{version}
 Obsoletes:      python-jupyter_core < %{version}
+BuildArch:      noarch
 %ifpython2
 Provides:       %{oldpython}-jupyter_core = %{version}
 Obsoletes:      %{oldpython}-jupyter_core < %{version}
 %endif
-BuildArch:      noarch
+%if %{with test}
+BuildRequires:  %{python_module jupyter-core}
+BuildRequires:  %{python_module nose}
+BuildRequires:  %{python_module pytest}
+BuildRequires:  python-mock
+%endif
 %python_subpackages
 
 %description
@@ -61,10 +76,12 @@
 %package     -n jupyter-jupyter-core
 Summary:        Base package on which Jupyter projects rely
 Group:          Development/Languages/Python
-Requires:       python3-jupyter_core = %{version}
 Requires:       jupyter-notebook-filesystem
+Requires:       python3-jupyter_core = %{version}
 Provides:       jupyter-jupyter_core = %{version}
 Obsoletes:      jupyter-jupyter_core < %{version}
+Provides:       jupyter-jupyter-core-doc = %{version}
+Obsoletes:      jupyter-jupyter-core-doc < %{version}
 
 %description -n jupyter-jupyter-core
 Core common functionality of Jupyter projects.
@@ -90,6 +107,7 @@
 %python_build
 
 %install
+%if !%{with test}
 %python_install
 
 %{python_expand chmod a+x 
%{buildroot}%{$python_sitelib}/jupyter_core/troubleshoot.py
@@ -98,7 +116,18 @@
 $python -O -m compileall -d %{$python_sitelib} 
%{buildroot}%{$python_sitelib}/jupyter_core/
 %fdupes %{buildroot}%{$python_sitelib}
 }
+%endif
 
+%if %{with test}
+%check
+# test_migrate requires files not found in the package
+pushd jupyter_core/tests
+rm test_migrate.py
+%pytest
+popd
+%endif
+
+%if !%{with test}
 %files %{python_files}
 %license COPYING.md
 %{python_sitelib}/jupyter.py*
@@ -112,5 +141,6 @@
 %{_bindir}/jupyter
 %{_bindir}/jupyter-migrate
 %{_bindir}/jupyter-troubleshoot
+%endif
 
 %changelog

++++++ _multibuild ++++++
<multibuild>
  <package>test</package>
</multibuild>
++++++ jupyter_core-4.6.1.tar.gz -> jupyter_core-4.6.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_core-4.6.1/PKG-INFO 
new/jupyter_core-4.6.3/PKG-INFO
--- old/jupyter_core-4.6.1/PKG-INFO     2019-10-24 06:10:36.000000000 +0200
+++ new/jupyter_core-4.6.3/PKG-INFO     2020-02-18 19:13:42.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: jupyter_core
-Version: 4.6.1
+Version: 4.6.3
 Summary: Jupyter core package. A base package on which Jupyter projects rely.
 Home-page: https://jupyter.org
 Author: Jupyter Development Team
@@ -16,6 +16,4 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Requires-Python: >=2.7, !=3.0, !=3.1, !=3.2
+Requires-Python: !=3.0,!=3.1,!=3.2,!=3.3,!=3.4,>=2.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_core-4.6.1/docs/changelog.rst 
new/jupyter_core-4.6.3/docs/changelog.rst
--- old/jupyter_core-4.6.1/docs/changelog.rst   2019-10-24 06:08:45.000000000 
+0200
+++ new/jupyter_core-4.6.3/docs/changelog.rst   2020-02-18 19:12:27.000000000 
+0100
@@ -4,6 +4,26 @@
 4.6
 ---
 
+4.6.3
+~~~~~
+
+`on
+GitHub <https://github.com/jupyter/jupyter_core/releases/tag/4.6.3>`__
+
+- Changed windows secure_write path to skip all filesystem permission checks 
when running in insecure mode.
+  Too many exception paths existed for mounted file systems to reliably try to 
set them before opting out with the insecure write pattern.
+
+
+4.6.2
+~~~~~
+
+`on
+GitHub <https://github.com/jupyter/jupyter_core/releases/tag/4.6.2>`__
+
+- Add ability to allow insecure writes with JUPYTER_ALLOW_INSECURE_WRITES 
environement variable (:ghpull:`182`).
+- Docs typo and build fixes
+- Added python 3.7 and 3.8 builds to testing
+
 4.6.1
 ~~~~~
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_core-4.6.1/jupyter_core/application.py 
new/jupyter_core-4.6.3/jupyter_core/application.py
--- old/jupyter_core-4.6.1/jupyter_core/application.py  2019-09-14 
00:09:00.000000000 +0200
+++ new/jupyter_core-4.6.3/jupyter_core/application.py  2020-02-11 
07:37:47.000000000 +0100
@@ -36,7 +36,8 @@
 
 from .paths import (
     jupyter_config_dir, jupyter_data_dir, jupyter_runtime_dir,
-    jupyter_path, jupyter_config_path,
+    jupyter_path, jupyter_config_path, allow_insecure_writes,
+    issue_insecure_write_warning
 )
 
 # aliases and flags
@@ -245,8 +246,9 @@
         self.load_config_file()
         # enforce cl-opts override configfile opts:
         self.update_config(cl_config)
-    
-    
+        if allow_insecure_writes:
+            issue_insecure_write_warning()
+
     def start(self):
         """Start the whole thing"""
         if self.subcommand:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_core-4.6.1/jupyter_core/paths.py 
new/jupyter_core-4.6.3/jupyter_core/paths.py
--- old/jupyter_core-4.6.1/jupyter_core/paths.py        2019-10-24 
06:08:45.000000000 +0200
+++ new/jupyter_core-4.6.3/jupyter_core/paths.py        2020-02-18 
19:10:10.000000000 +0100
@@ -14,9 +14,11 @@
 import stat
 import errno
 import tempfile
+import warnings
 from ipython_genutils import py3compat
 
 from contextlib import contextmanager
+from distutils.util import strtobool
 from ipython_genutils import py3compat
 
 pjoin = os.path.join
@@ -32,7 +34,7 @@
     # Next line will make things work even when /home/ is a symlink to
     # /usr/home as it is on FreeBSD, for example
     homedir = os.path.realpath(homedir)
-    homedir = py3compat.str_to_unicode(homedir, 
encoding=sys.getfilesystemencoding()) 
+    homedir = py3compat.str_to_unicode(homedir, 
encoding=sys.getfilesystemencoding())
     return homedir
 
 _dtemps = {}
@@ -387,8 +389,12 @@
     """
     # Some filesystems (e.g., CIFS) auto-enable the execute bit on files.  As 
a result, we
     # should tolerate the execute bit on the file's owner when validating 
permissions - thus
-    # the missing one's bit on the third octet.
-    return stat.S_IMODE(os.stat(fname).st_mode) & 0o7677  # Use 4 octets since 
S_IMODE does the same
+    # the missing least significant bit on the third octal digit. In addition, 
we also tolerate
+    # the sticky bit being set, so the lsb from the fourth octal digit is also 
removed.
+    return stat.S_IMODE(os.stat(fname).st_mode) & 0o6677  # Use 4 octal digits 
since S_IMODE does the same
+
+
+allow_insecure_writes = strtobool(os.getenv('JUPYTER_ALLOW_INSECURE_WRITES', 
'false'))
 
 
 @contextmanager
@@ -415,20 +421,38 @@
         pass
 
     if os.name == 'nt':
-        # Python on windows does not respect the group and public bits for 
chmod, so we need
-        # to take additional steps to secure the contents.
-        # Touch file pre-emptively to avoid editing permissions in open files 
in Windows
-        fd = os.open(fname, os.O_CREAT | os.O_WRONLY | os.O_TRUNC, 0o0600)
-        os.close(fd)
-        open_flag = os.O_WRONLY | os.O_TRUNC
-        win32_restrict_file_to_user(fname)
+        if allow_insecure_writes:
+            # Mounted file systems can have a number of failure modes inside 
this block.
+            # For windows machines in insecure mode we simply skip this to 
avoid failures :/
+            issue_insecure_write_warning()
+        else:
+            # Python on windows does not respect the group and public bits for 
chmod, so we need
+            # to take additional steps to secure the contents.
+            # Touch file pre-emptively to avoid editing permissions in open 
files in Windows
+            fd = os.open(fname, open_flag, 0o0600)
+            os.close(fd)
+            open_flag = os.O_WRONLY | os.O_TRUNC
+            win32_restrict_file_to_user(fname)
 
     with os.fdopen(os.open(fname, open_flag, 0o0600), mode) as f:
         if os.name != 'nt':
             # Enforce that the file got the requested permissions before 
writing
             file_mode = get_file_mode(fname)
             if 0o0600 != file_mode:
-                raise RuntimeError("Permissions assignment failed for secure 
file: '{file}'."
-                    "Got '{permissions}' instead of '0o0600'"
-                    .format(file=fname, permissions=oct(file_mode)))
+                if allow_insecure_writes:
+                    issue_insecure_write_warning()
+                else:
+                    raise RuntimeError("Permissions assignment failed for 
secure file: '{file}'."
+                        " Got '{permissions}' instead of '0o0600'."
+                        .format(file=fname, permissions=oct(file_mode)))
         yield f
+
+
+def issue_insecure_write_warning():
+    def format_warning(msg, *args, **kwargs):
+        return str(msg) + '\n'
+
+    warnings.formatwarning = format_warning
+    warnings.warn("WARNING: Insecure writes have been enabled via environment 
variable "
+                  "'JUPYTER_ALLOW_INSECURE_WRITES'! If this is not intended, 
remove the "
+                  "variable or set its value to 'False'.")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_core-4.6.1/jupyter_core/version.py 
new/jupyter_core-4.6.3/jupyter_core/version.py
--- old/jupyter_core-4.6.1/jupyter_core/version.py      2019-10-24 
06:09:45.000000000 +0200
+++ new/jupyter_core-4.6.3/jupyter_core/version.py      2020-02-18 
19:10:53.000000000 +0100
@@ -1,6 +1,6 @@
 # Copyright (c) Jupyter Development Team.
 # Distributed under the terms of the Modified BSD License.
 
-version_info = (4, 6, 1)
+version_info = (4, 6, 3)
 
 __version__ = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_core-4.6.1/jupyter_core.egg-info/PKG-INFO 
new/jupyter_core-4.6.3/jupyter_core.egg-info/PKG-INFO
--- old/jupyter_core-4.6.1/jupyter_core.egg-info/PKG-INFO       2019-10-24 
06:10:36.000000000 +0200
+++ new/jupyter_core-4.6.3/jupyter_core.egg-info/PKG-INFO       2020-02-18 
19:13:42.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: jupyter-core
-Version: 4.6.1
+Version: 4.6.3
 Summary: Jupyter core package. A base package on which Jupyter projects rely.
 Home-page: https://jupyter.org
 Author: Jupyter Development Team
@@ -16,6 +16,4 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Requires-Python: >=2.7, !=3.0, !=3.1, !=3.2
+Requires-Python: !=3.0,!=3.1,!=3.2,!=3.3,!=3.4,>=2.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_core-4.6.1/setup.cfg 
new/jupyter_core-4.6.3/setup.cfg
--- old/jupyter_core-4.6.1/setup.cfg    2019-10-24 06:10:36.000000000 +0200
+++ new/jupyter_core-4.6.3/setup.cfg    2020-02-18 19:13:42.000000000 +0100
@@ -17,14 +17,12 @@
        Programming Language :: Python :: 2
        Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
-       Programming Language :: Python :: 3.3
-       Programming Language :: Python :: 3.4
 
 [options]
 py_modules = jupyter
 packages = jupyter_core, jupyter_core.utils, jupyter_core.tests
 include_package_data = True
-python_requires = >=2.7, !=3.0, !=3.1, !=3.2
+python_requires = >=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4
 install_requires = 
        traitlets
        pywin32>=1.0 ; sys_platform == 'win32'


Reply via email to