Re: This is a test

2021-01-08 Thread Wesley Peng
Please don't send a test message to the public list which was read by
thousands of people. thanks.

On Fri, Jan 8, 2021 at 5:26 AM Craig Hatch  wrote:

> I have added you to the EMAIL  list, so when I have questions.
>
> Just learn for fun.
>
>
> Craig Hatch
> --
> https://mail.python.org/mailman/listinfo/python-list
>
-- 
https://mail.python.org/mailman/listinfo/python-list


Remove duplicate values from dictionary without removing key

2021-01-08 Thread Umar Draz
I want to replace duplicate values with empty "" in my dictionary. Here is
my original dictionary.

items = [
{'client': 'xyz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 100},
{'client': 'xyz','name': "Abdelmadjid Tebboune", 'rating': 4.0,
'total': 100},
{'client': 'xyz','name': "Alexander Lukashenko", 'rating': 3.1,
'total': 100},
{'client': 'xyz', 'name': "Miguel Díaz-Canel", 'rating': 0.32,
'total': 100},
{'client': 'udz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 150},
{'client': 'udz', 'name': "Abdelmadjid Tebboune", 'rating': 4.0,
'total': 100},
{'client': 'udz', 'name': "Alexander Lukashenko", 'rating': 3.1,
'total': 150},
{'client': 'udz', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': 150}
]


Now I want to create another dict with like this

items = [
{'client': 'xyz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 100},
{'client': '','name': "Abdelmadjid Tebboune", 'rating': 4.0, 'total': ''},
{'client': '','name': "Alexander Lukashenko", 'rating': 3.1, 'total': ''},
{'client': '', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': ''},
{'client': 'udz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 150},
{'client': '', 'name': "Abdelmadjid Tebboune", 'rating': 4.0, 'total': ''},
{'client': '', 'name': "Alexander Lukashenko", 'rating': 3.1, 'total': ''},
{'client': '', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': ''}
]


Would you please help me how I can do this? and if this is not the right
place to ask this question then please help me where I can ask this? I had
tried stackoverflow but that not worked.
-- 
https://mail.python.org/mailman/listinfo/python-list


better handling of "pinned" modules?

2021-01-08 Thread Andrew Jaffe

Hi,

I don't know if this makes more sense here or on "python-ideas" (or 
elsewhere?) but I'll try this first:


I am starting to encounter more and more instances of packages requiring 
older, pinned, versions of modules, and this is occasionally actually 
starting to cause conflicts.


It seems that the "official" way to handle this is through virtual 
environments, but this is not ideal for my workflow, which usually 
involves a lot of exploratory analysis -- I don't know which packages 
I'll need before I start (and, in any event, there's no guarantee I 
won't need conflicting packages).


Are there any good workarounds, or proposals for actual solutions so 
that multiple versions of a package can be installed? I understand that 
this is not trivial. Where would the "pinning" happen? It could be in 
the source code, so that it would somehow happen in the `import` 
statement (e.g., by explicitly renaming the package in question to 
include a version number, or less likely, by a new `import` syntax)? Or 
it could happen in the structure of the way modules are stored so that, 
for example, any imports that happen within a specific package egg would 
be directed to a specific version stored within the egg or in some other 
known location?


Is this an issue worth tackling?

Or do we just have to rely on package developers to keep up with their 
dependencies?


Yours,

Andrew

--
https://mail.python.org/mailman/listinfo/python-list


Re: better handling of "pinned" modules?

2021-01-08 Thread Chris Angelico
On Sat, Jan 9, 2021 at 5:18 AM Andrew Jaffe  wrote:
>
> Hi,
>
> I don't know if this makes more sense here or on "python-ideas" (or
> elsewhere?) but I'll try this first:
>
> I am starting to encounter more and more instances of packages requiring
> older, pinned, versions of modules, and this is occasionally actually
> starting to cause conflicts.
>

The first thing to do is to see if those packages ACTUALLY need older
versions of those dependencies. There's a good chance they don't.

To avoid creating this sort of problem, don't depend on a highly
specific version of things; just depend on a minimum version, and if
there's a problem (ONLY if there's a problem), a maximum version.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Remove duplicate values from dictionary without removing key

2021-01-08 Thread MRAB

On 2021-01-08 09:56, Umar Draz wrote:

I want to replace duplicate values with empty "" in my dictionary. Here is
my original dictionary.

items = [
 {'client': 'xyz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 100},
 {'client': 'xyz','name': "Abdelmadjid Tebboune", 'rating': 4.0,
'total': 100},
 {'client': 'xyz','name': "Alexander Lukashenko", 'rating': 3.1,
'total': 100},
 {'client': 'xyz', 'name': "Miguel Díaz-Canel", 'rating': 0.32,
'total': 100},
 {'client': 'udz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 150},
 {'client': 'udz', 'name': "Abdelmadjid Tebboune", 'rating': 4.0,
'total': 100},
 {'client': 'udz', 'name': "Alexander Lukashenko", 'rating': 3.1,
'total': 150},
 {'client': 'udz', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': 
150}
]


Now I want to create another dict with like this

items = [
 {'client': 'xyz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 100},
 {'client': '','name': "Abdelmadjid Tebboune", 'rating': 4.0, 'total': ''},
 {'client': '','name': "Alexander Lukashenko", 'rating': 3.1, 'total': ''},
 {'client': '', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': ''},
 {'client': 'udz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 150},
 {'client': '', 'name': "Abdelmadjid Tebboune", 'rating': 4.0, 'total': ''},
 {'client': '', 'name': "Alexander Lukashenko", 'rating': 3.1, 'total': ''},
 {'client': '', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': ''}
]


Would you please help me how I can do this? and if this is not the right
place to ask this question then please help me where I can ask this? I had
tried stackoverflow but that not worked.


Iterate through the list of dicts.

If you've seen the client before, then set the appropriate value or 
values in the dict to ''.


You can use a set to remember which clients you've already seen.
--
https://mail.python.org/mailman/listinfo/python-list


asyncio project code review

2021-01-08 Thread James

Good day everyone.

I have new asyncio project which use aiohttp connector and asyncio 
protocols/transports for tunneling packets through Tor Network cleanly. 
Project called aiotor: https://github.com/torpyorg/aiotor


If someone with experience in asyncio field can make code review I will 
be appreciated for any comments.


I prepared pull request to make it convenient to review and comment on 
the code: https://github.com/torpyorg/aiotor/pull/1



--
https://mail.python.org/mailman/listinfo/python-list


Asyncio project code review

2021-01-08 Thread James

Good day for everyone.

I have new asyncio project which use aiohttp connector and asyncio 
protocols/transports for tunneling packets through Tor Network cleanly. 
Project called aiotor: https://github.com/torpyorg/aiotor


If someone with experience in asyncio field can make code review I will 
be appreciated for any comments.


I prepared pull request to make it convenient to review and comment on 
the code: https://github.com/torpyorg/aiotor/pull/1


Thanks in advance.
--
https://mail.python.org/mailman/listinfo/python-list


tkinter: creating/attaching menubar to top level window

2021-01-08 Thread Rich Shepard

I'm using Chapter 9 in Mark Roseman's "Modern Tkinter for Busy Python
Developers" to learn how to write a top level menu. MWE code is attached.

Python3 tells me there's invalid syntax on line 42:
self.['menu'] = menubar # attach it to the top level window
 ^
yet that's the syntax he prints on page 84 (and has in the book's code
supplement).

Why am I getting an invalid syntax error here?

TIA,

Rich
#!/usr/bin/env python3

# main file to start application.
from os import environ
import sys
import pdb
from datetime import datetime
import tkinter as tk
from tkinter import ttk
from tkinter import Menu
from tkinter import filedialog
from tkinter import messagebox
from tkinter.font import nametofont
from functools import partial
import model as m
import views as v
import controller as c


class Application(tk.Tk):
""" Application root window """

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

# the top level frame holding menu, status bar, etc.
self.columnconfigure(0, weight=1)
self.rowconfigure(0, weight=1)
self.geometry('800x600')
self.title("Frame title")
self.resizable(width=True, height=True)

datestring = datetime.today().strftime("%Y-%m-%d")

# status bar
self.status = tk.StringVar()
self.statusbar = ttk.Label(self, textvariable=self.status)
self.statusbar.grid(sticky="we", row=3, padx=10)

# toplevel window menu
menubar = Menu(self) # create a Menu widget
self.['menu'] = menubar # attach it to the top level window
""" Add menus to menubar """
self.menu_file = Menu(menubar, tearoff=0)
self.menu_view = Menu(menubar, tearoff=0)
self.menu_add = Menu(menubar, tearoff=0)
self.menu_edit = Menu(menubar, tearoff=0)
self.menu_report = Menu(menubar, tearoff=0)
self.menu_help = Menu(menubar, tearoff=0)
""" Add menu items to menus """
menubar.add_cascade(menu_file, label='File')
menubar.add_cascade(menu_view, label='View')
menubar.add_cascade(menu_add, label='Add')
menubar.add_cascade(menu_edit, label='Edit')
menubar.add_cascade(menu_report, label='Report')
menubar.add_cascade(menu_help, label='Help')

if __name__ == "__main__":
app = Application()
app.mainloop()
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: tkinter: creating/attaching menubar to top level window

2021-01-08 Thread Christian Gollwitzer

Am 08.01.21 um 22:47 schrieb Rich Shepard:

I'm using Chapter 9 in Mark Roseman's "Modern Tkinter for Busy Python
Developers" to learn how to write a top level menu. MWE code is attached.

Python3 tells me there's invalid syntax on line 42:
     self.['menu'] = menubar # attach it to the top level window
  ^
yet that's the syntax he prints on page 84 (and has in the book's code
supplement).


It is a simple typo, remove the dot.

self['menu'] = menubar

It will then stop at the add_cascade, fix it like this:

 menubar.add_cascade(menu=self.menu_file, label='File')

and then it works,


Why am I getting an invalid syntax error here?


Because the dot would indicate the access of an attribute. but no name 
follows. What it does here, instead, is indexing - the correct line is 
similar to setting a dict entry.


Christian
--
https://mail.python.org/mailman/listinfo/python-list


Re: tkinter: creating/attaching menubar to top level window

2021-01-08 Thread Richard Damon
On 1/8/21 4:47 PM, Rich Shepard wrote:
> I'm using Chapter 9 in Mark Roseman's "Modern Tkinter for Busy Python
> Developers" to learn how to write a top level menu. MWE code is attached.
>
> Python3 tells me there's invalid syntax on line 42:
>     self.['menu'] = menubar # attach it to the top level window
>  ^
> yet that's the syntax he prints on page 84 (and has in the book's code
> supplement).
>
> Why am I getting an invalid syntax error here?
>
> TIA,
>
> Rich 


Because it is the wrong syntax.

It could be either:

self.menu = menubar

or

self['menu'] = menubar

-- 
Richard Damon

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: dayofyear is not great when going into a new year

2021-01-08 Thread Martin Schöön
Den 2021-01-05 skrev Stefan Ram :
> Martin =?UTF-8?Q?Sch=C3=B6=C3=B6n?=  writes:
>>I have had some Python fun with COVID-19 data. I have done
>>some curve fitting and to make that easier I have transformed
>>date to day of year. Come end of 2020 and beginning of 2021
>>and this idea falls on its face.
>
> import datetime
>
> continuous_day_of_the_year = \
> ( datetime.date.today() - datetime.date( 2020, 1, 1 )).days
>
>
Thanks guys, you got me on the right track. After some further
meandering I did something close to what Stefan suggest above.
I added a column to my Pandas data frame and populated it with

content of date column - datetime(2020, 1, 1)

"regardless of what you have been told, recreational use of
mathematics is harmless"

I hope that is true for recreational programming as well :-)

/Martin
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: dayofyear is not great when going into a new year

2021-01-08 Thread Greg Ewing

On 9/01/21 11:17 am, Martin Schöön wrote:

"regardless of what you have been told, recreational use of
mathematics is harmless"

I hope that is true for recreational programming as well :-)


Mostly harmless, but it can be addictive!

--
Greg
--
https://mail.python.org/mailman/listinfo/python-list


learning python building 2nd app, need advices

2021-01-08 Thread pascal z via Python-list
Hi,

This is a python app I was working on, can you help making it a beautiful 
looking app like bleachbit or ccleaner?

The whole code below (what it does: it lists all folders and files from a 
specified path and tells some infos like size in mb or gb... and export it to a 
csv file for further processing maybe with customized dashboard...the listing 
should will also be used to rename multiple files to help ordering and finding 
files because current renaming tools are difficult to use I find...) For now it 
just gives infos about folders and files and rename. Maybe a backup tool would 
be nice, please advise. But the code is opposiite to bullet proof and if could 
be more bullet proof, it would be a way to start and continue

the messy code

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import locale
import os
import csv
from tkinter import messagebox as msg

try:
from tkinter import *
import ttk
except:
import tkinter as tk #GUI package
from tkinter import ttk


def fx_BasicListing():
#argx mode = 1 pour basic listing
#argx mode = 2 pour adv listing
# "txt" pour type enreg csv txt/csv
# tree.delete(*tree.get_children())
fx_browseFoldersZ(1)
return

def fx_AdvancedListing():
#argx mode = 1 pour basic listing
#argx mode = 2 pour adv listing
# fx_browseFoldersZ(2,"txt")
# tree.destroy()
#tree.delete(*tree.get_children())
fx_browseFoldersZ(2)
return

def fx_browseFoldersZ(argy):
#argx mode = 1 pour basic listing
#argx mode = 2 pour adv listing
# "txt" pour type enreg csv txt/csv
tree.delete(*tree.get_children())
fx_browseFolders(argy,"txt")

###
###
###

def fx_writeCSV(*arr):

csv_file_title = 'csv_1_baselisting.csv'
# csv path entry box
CSV_FILE = vcsv_path.get()

if not os.path.exists(CSV_FILE):
os.makedirs(CSV_FILE)

CSV_FILE += csv_file_title
print('%s' % CSV_FILE)

with open(CSV_FILE,'w', newline ='\n') as f:
write = csv.writer(f, doublequote=True, delimiter=';')
for row in arr:
write.writerows(row)

def fx_writeCSV_str(txt_str):
csv_file_title = 'csvtxt_1_baselisting.csv'
# csv path entry box
CSV_FILE = vcsv_path.get()

if not os.path.exists(CSV_FILE):
os.makedirs(CSV_FILE)

CSV_FILE += csv_file_title
print('%s' % CSV_FILE)

with open(CSV_FILE,'w') as f:
f.write(txt_str)

# fx_LoadCSV(CSV_FILE)

with open(CSV_FILE, 'r') as f:
reader = csv.DictReader(f, delimiter=';')
for row in reader:
col1 = row['Path']
col2 = row['Folder-file']
col3 = row['Size in Byte']
col4 = row['Size in Kb']
col5 = row['Size in Mb']
col6 = row['Size in Gb']
col7 = row['type']

tree.insert('', 'end', values=(col1, col2, col3, col4, col5, 
col6,col7))

return

###
###

def fx_chkPath(xzPath):
isxFile = os.path.isfile(xzPath)
isxDir = os.path.isdir(xzPath)
print("DOSSIER OUI",isxDir)
if isxDir:
return
elif not isxDir:
msg.showwarning("Folder path", "WD Path entered not found")
return


###
###
###


def fx_browseFolders(argz, tycsv):
tree.delete(*tree.get_children())
# /// /// ///
csv_txt = ""
csv_contents = ""
counterPath = 0
size = 0
f_size = 0
f_vscale = 0
# /// /// ///

# path WD
Lpath = vtxt_path.get()
print('%s' % Lpath)

# include files
vvchkboxF = vchkboxF.get()
# print("include files:::", vchkboxF.get())

# include modification date
print(vchkboxD.get())

# include creation date
print(vchkboxC.get())

# scale
f_vscale = int(var_scale.get())
print(f_vscale)

# path WD 2
if Lpath.endswith(os.path.sep):
   Lpath = Lpath[:-1]

# isFile = os.path.isfile(Lpath)
# print("fichier?",isFile)
fx_chkPath(Lpath)

counterPath = Lpath.count(os.path.sep)

csv_contents = "Path;Folder-file;Size in Byte;Size in Kb;Size in Mb;Size in 
Gb;type\n"

csv_txt = csv_contents

# csv_contents
# 1-FOLDER PATH
# 2-FILENAME
# 3-FOLDER PATH FULL
# 4-Size in Byte
# 5-Size in Kb
# 6-Size in Mb
# 7-Size in Gb
# 8-type\n

### BASIC LISTING #
if argz == 1:
print("basic listing")
fi

Re: learning python building 2nd app, need advices

2021-01-08 Thread pascal z via Python-list
any way to attach a file because I loose indentation?
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: tkinter: creating/attaching menubar to top level window [RESOLVED]

2021-01-08 Thread Rich Shepard

On Fri, 8 Jan 2021, Christian Gollwitzer wrote:


It is a simple typo, remove the dot.
self['menu'] = menubar
It will then stop at the add_cascade, fix it like this:


Christian,

Well, I totally missed that because I'm used to adding a period after each
self. Your fresh eyes saw what I kept missing,


menubar.add_cascade(menu=self.menu_file, label='File')


I was going to add the 'self' there when I found what stopped the processing
before it.

Many thanks.

Stay well and carpe weekend,

Rich
--
https://mail.python.org/mailman/listinfo/python-list


Re: tkinter: creating/attaching menubar to top level window

2021-01-08 Thread Rich Shepard

On Fri, 8 Jan 2021, Richard Damon wrote:


It could be either:
self.menu = menubar
or
self['menu'] = menubar


Got it, Richard. Removed the period after 'self'.

Thanks,

Rich
--
https://mail.python.org/mailman/listinfo/python-list


Re: learning python building 2nd app, need advices

2021-01-08 Thread pascal z via Python-list
And something important to this app, is about listing files, how to avoid 
listing small application files parts .ini and binary files so if it's an 
application it would tell the size of of the folder of this application and not 
list the content or make it optionnal?
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: learning python building 2nd app, need advices

2021-01-08 Thread Greg Ewing

On 9/01/21 12:10 pm, pascal z wrote:

any way to attach a file because I loose indentation?


Indentation usually makes it through here if you indent with
spaces rather than tabs.

--
Greg
--
https://mail.python.org/mailman/listinfo/python-list


Re: learning python building 2nd app, need advices

2021-01-08 Thread Richard Damon
On 1/8/21 6:10 PM, pascal z via Python-list wrote:
> any way to attach a file because I loose indentation?

Don't post via googlegroups, it thinks the world is HTML, which treats
spaces in a funny matter.

-- 
Richard Damon

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Remove duplicate values from dictionary without removing key

2021-01-08 Thread Louis Krupp

On 1/8/2021 2:56 AM, Umar Draz wrote:

I want to replace duplicate values with empty "" in my dictionary. Here is
my original dictionary.

items = [
 {'client': 'xyz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 100},
 {'client': 'xyz','name': "Abdelmadjid Tebboune", 'rating': 4.0,
'total': 100},
 {'client': 'xyz','name': "Alexander Lukashenko", 'rating': 3.1,
'total': 100},
 {'client': 'xyz', 'name': "Miguel Díaz-Canel", 'rating': 0.32,
'total': 100},
 {'client': 'udz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 150},
 {'client': 'udz', 'name': "Abdelmadjid Tebboune", 'rating': 4.0,
'total': 100},
 {'client': 'udz', 'name': "Alexander Lukashenko", 'rating': 3.1,
'total': 150},
 {'client': 'udz', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': 
150}
]


Now I want to create another dict with like this

items = [
 {'client': 'xyz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 100},
 {'client': '','name': "Abdelmadjid Tebboune", 'rating': 4.0, 'total': ''},
 {'client': '','name': "Alexander Lukashenko", 'rating': 3.1, 'total': ''},
 {'client': '', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': ''},
 {'client': 'udz', 'name': "Ilir Meta", 'rating': 0.06, 'total': 150},
 {'client': '', 'name': "Abdelmadjid Tebboune", 'rating': 4.0, 'total': ''},
 {'client': '', 'name': "Alexander Lukashenko", 'rating': 3.1, 'total': ''},
 {'client': '', 'name': "Miguel Díaz-Canel", 'rating': 0.32, 'total': ''}
]


Would you please help me how I can do this? and if this is not the right
place to ask this question then please help me where I can ask this? I had
tried stackoverflow but that not worked.


items isn't a dictionary; as MRAB mentioned, it's a list of 
dictionaries. Each dictionary in items looks like a database record with 
fields (client, name, rating, and total).


When you say you want to replace duplicate client fields by "", it 
almost looks like you're getting ready to print a report that looks 
something like this:


xyz    Ilir Meta  0.06    100
  Abdelmadjid Tebboune    4.00    100
  Alexander Lukashenko 3.10
...

where the report will look better when duplicate client values aren't 
printed.


If that's the case, there are almost certainly better ways to do it. 
Changing values in items might have unforeseen consequences, since once 
duplicate client fields have been wiped out, there's no way to retrieve 
items[1]["client"] without looking at items[0]. And if the list of items 
is ever reordered, some of the client fields will be lost for good.


I hope this helps.

Louis
--
https://mail.python.org/mailman/listinfo/python-list


Re: better handling of "pinned" modules?

2021-01-08 Thread Andrew Jaffe

On 08/01/2021 18:21, Chris Angelico wrote:

On Sat, Jan 9, 2021 at 5:18 AM Andrew Jaffe  wrote:


Hi,

I don't know if this makes more sense here or on "python-ideas" (or
elsewhere?) but I'll try this first:

I am starting to encounter more and more instances of packages requiring
older, pinned, versions of modules, and this is occasionally actually
starting to cause conflicts.



The first thing to do is to see if those packages ACTUALLY need older
versions of those dependencies. There's a good chance they don't.

To avoid creating this sort of problem, don't depend on a highly
specific version of things; just depend on a minimum version, and if
there's a problem (ONLY if there's a problem), a maximum version.


Well, sure. But there's still the "aesthetic" problem that `pip[3] 
check` reports a problem in such a case, and the real (albeit 
correctable) problem that `pip[3] install --upgrade` will occasionally 
automatically downgrade required packages.


So perhaps my original query about whether there could be a way to 
actually solve this problem is still potentially interesting/useful.


AndrewJ


ChrisA




--
https://mail.python.org/mailman/listinfo/python-list


Re: dayofyear is not great when going into a new year

2021-01-08 Thread Christian Gollwitzer

Am 05.01.21 um 23:56 schrieb Eli the Bearded:

Elijah
--
also finds "week starts on Monday" to be oddball about ISO-8601



In Europe, the week starts on Monday - hence, Saturday and Sunday are 
the last days of the week or the "weekend". Starting on Sunday is weird 
for us, because then the weekend is split into the first and last day of 
the week (?) - even if, historically, the week was the time from Sunday 
to Sunday.



Christian
--
https://mail.python.org/mailman/listinfo/python-list