Hello community,

here is the log from the commit of package python-userpath for openSUSE:Factory 
checked in at 2020-07-24 10:06:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-userpath (Old)
 and      /work/SRC/openSUSE:Factory/.python-userpath.new.3592 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-userpath"

Fri Jul 24 10:06:30 2020 rev:3 rq:822369 version:1.4.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-userpath/python-userpath.changes  
2020-05-19 14:48:14.988040272 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-userpath.new.3592/python-userpath.changes    
    2020-07-24 10:07:35.322027589 +0200
@@ -1,0 +2,7 @@
+Thu Jul 23 11:07:58 UTC 2020 - Marketa Calabkova <mcalabk...@suse.com>
+
+- update to 1.4.1
+  * Prevent adding paths multiple times on macOS/Linux
+  * Send CLI errors to stderr instead of stdout
+
+-------------------------------------------------------------------

Old:
----
  userpath-1.3.0.tar.gz

New:
----
  userpath-1.4.1.tar.gz

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

Other differences:
------------------
++++++ python-userpath.spec ++++++
--- /var/tmp/diff_new_pack.4EQLVY/_old  2020-07-24 10:07:40.946033228 +0200
+++ /var/tmp/diff_new_pack.4EQLVY/_new  2020-07-24 10:07:40.950033231 +0200
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-userpath
-Version:        1.3.0
+Version:        1.4.1
 Release:        0
 Summary:        Tool for adding locations to the user PATH
 License:        MIT OR Apache-2.0

++++++ userpath-1.3.0.tar.gz -> userpath-1.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userpath-1.3.0/PKG-INFO new/userpath-1.4.1/PKG-INFO
--- old/userpath-1.3.0/PKG-INFO 2019-10-20 15:37:22.000000000 +0200
+++ new/userpath-1.4.1/PKG-INFO 2020-06-25 18:19:01.448213800 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: userpath
-Version: 1.3.0
+Version: 1.4.1
 Summary: Cross-platform tool for adding locations to the user PATH, no 
elevated privileges required!
 Home-page: https://github.com/ofek/userpath
 Author: Ofek Lev
@@ -124,6 +124,13 @@
         
         Important changes are emphasized.
         
+        1.4.0
+        ^^^^^
+        
+        - Fix duplicating system paths on Windows
+        - Prevent adding paths multiple times on macOS/Linux
+        - Send CLI errors to stderr instead of stdout
+        
         1.3.0
         ^^^^^
         
@@ -153,5 +160,7 @@
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userpath-1.3.0/README.rst 
new/userpath-1.4.1/README.rst
--- old/userpath-1.3.0/README.rst       2019-10-20 07:03:42.000000000 +0200
+++ new/userpath-1.4.1/README.rst       2020-05-09 16:59:33.000000000 +0200
@@ -114,6 +114,13 @@
 
 Important changes are emphasized.
 
+1.4.0
+^^^^^
+
+- Fix duplicating system paths on Windows
+- Prevent adding paths multiple times on macOS/Linux
+- Send CLI errors to stderr instead of stdout
+
 1.3.0
 ^^^^^
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userpath-1.3.0/setup.py new/userpath-1.4.1/setup.py
--- old/userpath-1.3.0/setup.py 2019-10-20 05:42:51.000000000 +0200
+++ new/userpath-1.4.1/setup.py 2020-06-25 18:15:19.000000000 +0200
@@ -44,6 +44,8 @@
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: PyPy',
     ],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userpath-1.3.0/tests/test_bash.py 
new/userpath-1.4.1/tests/test_bash.py
--- old/userpath-1.3.0/tests/test_bash.py       2019-05-28 05:56:06.000000000 
+0200
+++ new/userpath-1.4.1/tests/test_bash.py       2020-05-09 14:49:01.000000000 
+0200
@@ -38,6 +38,22 @@
 
             assert process.returncode == 0, (stdout + stderr).decode('utf-8')
 
+    def test_prepend_twice(self, request, shell_test):
+        if shell_test is None:
+            location = get_random_path()
+            assert not userpath.in_current_path(location)
+            assert userpath.prepend(location, check=True)
+            assert userpath.in_new_path(location)
+            assert userpath.need_shell_restart(location)
+
+            assert userpath.prepend(location, check=True)
+        else:
+            process = shell_test(request.node.name)
+            stdout, stderr = process.communicate()
+
+            assert process.returncode == 0, (stdout + stderr).decode('utf-8')
+
+
     def test_append(self, request, shell_test):
         if shell_test is None:
             location = get_random_path()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userpath-1.3.0/userpath/__init__.py 
new/userpath-1.4.1/userpath/__init__.py
--- old/userpath-1.3.0/userpath/__init__.py     2019-10-20 15:35:43.000000000 
+0200
+++ new/userpath-1.4.1/userpath/__init__.py     2020-06-25 18:14:38.000000000 
+0200
@@ -1,4 +1,4 @@
 from .core import append, in_new_path, need_shell_restart, prepend
 from .utils import in_current_path
 
-__version__ = '1.3.0'
+__version__ = '1.4.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userpath-1.3.0/userpath/cli.py 
new/userpath-1.4.1/userpath/cli.py
--- old/userpath-1.3.0/userpath/cli.py  2019-07-13 19:28:37.000000000 +0200
+++ new/userpath-1.4.1/userpath/cli.py  2020-05-09 16:01:45.000000000 +0200
@@ -14,7 +14,7 @@
 
 
 def echo_failure(text, nl=True):
-    click.secho(text, fg='red', bold=True, nl=nl)
+    click.secho(text, fg='red', bold=True, nl=nl, err=True)
 
 
 def echo_warning(text, nl=True):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userpath-1.3.0/userpath/interface.py 
new/userpath-1.4.1/userpath/interface.py
--- old/userpath-1.3.0/userpath/interface.py    2019-07-18 18:07:41.000000000 
+0200
+++ new/userpath-1.4.1/userpath/interface.py    2020-06-25 18:12:53.000000000 
+0200
@@ -1,28 +1,37 @@
 import os
 import platform
-import subprocess
 from datetime import datetime
 from io import open
 
 from .shells import DEFAULT_SHELLS, SHELLS
 from .utils import ensure_parent_dir_exists, get_flat_output, 
get_parent_process_name, location_in_path, normpath
 
+try:
+    import winreg
+except ImportError:
+    try:
+        import _winreg as winreg
+    except ImportError:
+        winreg = None
+
 
 class WindowsInterface:
     def __init__(self, **kwargs):
         pass
 
+    @staticmethod
+    def _get_new_path():
+        with winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Environment', 0, 
winreg.KEY_READ) as key:
+            return winreg.QueryValueEx(key, 'PATH')[0]
+
     def location_in_new_path(self, location, check=False):
         locations = normpath(location).split(os.pathsep)
-        show_path_command = ['powershell', '-Command', "& 
{[Environment]::GetEnvironmentVariable('PATH', 'User')}"]
-        new_path = get_flat_output(show_path_command, sep='', shell=True)
+        new_path = self._get_new_path()
 
         for location in locations:
             if not location_in_path(location, new_path):
                 if check:
-                    raise Exception(
-                        'Unable to find `{}` in the output of 
`{}`:\n{}'.format(location, show_path_command, new_path)
-                    )
+                    raise Exception('Unable to find `{}` 
in:\n{}'.format(location, new_path))
                 else:
                     return False
         else:
@@ -31,36 +40,11 @@
     def put(self, location, front=True, check=False, **kwargs):
         location = normpath(location)
 
-        # PowerShell should always be available on Windows 7 or later.
-        try:
-            old_path = os.environ.get('PATH', '')
-            head, tail = (location, old_path) if front else (old_path, 
location)
-            new_path = '{}{}{}'.format(head, os.pathsep, tail)
-
-            subprocess.check_output(
-                [
-                    'powershell',
-                    '-Command',
-                    "& {{[Environment]::SetEnvironmentVariable('PATH', '{}', 
'User')}}".format(new_path),
-                ],
-                shell=True,
-            )
-        except subprocess.CalledProcessError:  # no cov
-            try:
-                head, tail = (location, '%~a') if front else ('%~a', location)
-                new_path = '{}{}{}'.format(head, os.pathsep, tail)
-
-                # https://superuser.com/a/601034/766960
-                subprocess.check_output(
-                    (
-                        'for /f "skip=2 tokens=3*" %a in (\'reg query 
HKCU\\Environment '
-                        '/v PATH\') do @if [%b]==[] ( @setx PATH "{new_path}" 
) else '
-                        '( @setx PATH "{new_path} %~b" 
)'.format(new_path=new_path)
-                    ),
-                    shell=True,
-                )
-            except subprocess.CalledProcessError:
-                return False
+        head, tail = (location, self._get_new_path()) if front else 
(self._get_new_path(), location)
+        new_path = '{}{}{}'.format(head, os.pathsep, tail)
+
+        with winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Environment', 0, 
winreg.KEY_WRITE) as key:
+            winreg.SetValueEx(key, 'PATH', 0, winreg.REG_EXPAND_SZ, new_path)
 
         return self.location_in_new_path(location, check=check)
 
@@ -143,6 +127,9 @@
                     else:
                         lines = []
 
+                    if any(contents in line for line in lines):
+                        continue
+
                     lines.append(
                         u'\n{} Created by `{}` on {}\n'.format(
                             shell.comment_starter, app_name, 
datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userpath-1.3.0/userpath.egg-info/PKG-INFO 
new/userpath-1.4.1/userpath.egg-info/PKG-INFO
--- old/userpath-1.3.0/userpath.egg-info/PKG-INFO       2019-10-20 
15:37:21.000000000 +0200
+++ new/userpath-1.4.1/userpath.egg-info/PKG-INFO       2020-06-25 
18:19:01.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: userpath
-Version: 1.3.0
+Version: 1.4.1
 Summary: Cross-platform tool for adding locations to the user PATH, no 
elevated privileges required!
 Home-page: https://github.com/ofek/userpath
 Author: Ofek Lev
@@ -124,6 +124,13 @@
         
         Important changes are emphasized.
         
+        1.4.0
+        ^^^^^
+        
+        - Fix duplicating system paths on Windows
+        - Prevent adding paths multiple times on macOS/Linux
+        - Send CLI errors to stderr instead of stdout
+        
         1.3.0
         ^^^^^
         
@@ -153,5 +160,7 @@
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy


Reply via email to