Re: Python question
On 3/10/20 6:49 PM, Souvik Dutta wrote: > What about moving on to a social media app completely made in pythoj for > python? No thanks. I don't want to be on yet another web forum. I don't need "social media" or a "social media app." Email works exceedingly well for this sort of thing, despite Google's antics. Sadly a lot of open source projects are abandoning the good old list and moving to awkward web forums like Discourse. With e-mail lists, everything is right here in my email client (Thunderbird), separated out into folders with procmail (or whatever filtering system you want), and with proper nesting of messages. No web forum I've seen offers this convenience or proper nesting. Electronic communication is fraught enough. "Social media" (whatever that means) seems to just make it harder. -- https://mail.python.org/mailman/listinfo/python-list
Re: Pysftp Issue File Upload is not working - put command
> > > Hi >We have requirement where we need to get file from client path and then > upload the same to vendor directory path. I am not able to upload the file > to vendor directory path , however when I tried to use the WINSCP it worked > fine. So I thought of checking with Gurus what is wrong I am doing in my > script. Appreciate your input. > I will attach my script. Here is what I am doing. > > Step1. Clear the client directory path > Step2. Make a call to HVAC Vault to get the username and password for > client and vendor server > Step3. Use the username and password to establish connection using pysftp > for client. > Step4. Store the file in local path. > Step5. Segregate the file into different path based on file type > Step6 Establish a connection to vendor and upload the file to vendor > directory path. > Step7 Close the client and Vendor connection > > Note : In step 6 I am getting an error and I am getting below error > Please see the file attached for code. > > Also below is the error which I am getting > > - > > > > > > > > > > > > > > > > > > > > * ERROR:root:Error in getting the file from EBS Outbound Server Traceback > (most recent call last): File "FILE_TRANSFER_PROCESS.py", line 191, in > file_transfer vendor.put(src_file, dst_file) File > "/d01/python3/lib64/python3.6/site-packages/pysftp/__init__.py", line 364, > in put confirm=confirm) File > "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line > 759, in put return self.putfo(fl, remotepath, file_size, callback, > confirm) File > "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line > 720, in putfo s = self.stat(remotepath) File > "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line > 493, in stat t, msg = self._request(CMD_STAT, path) File > "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line > 813, in _request return self._read_response(num) File > "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line > 865, in _read_response self._convert_status(msg) File > "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line > 894, in _convert_status raise IOError(errno.ENOENT, text) > FileNotFoundError: [Errno 2] /custom/OWO/ECE_OWO_20200303_143895.dat* > __ > #!/usr/bin/python # -*- coding: utf-8 -*- import csv # from pysftp import Connection, CnOpts import os import sys import pysftp import logging import hvac import datetime from datetime import datetime import ssl import smtplib import shutil from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders def file_delete (dirs): write_to_file('F', 'The directory is '+dirs) for files in os.listdir(dirs): filed = dirs + "/" +files write_to_file('F','File is to be deleted '+filed) os.remove(filed) def write_to_file(mode,filetext): log_path = "/home/kishnx/scripts/log/sftp.log" if mode == 'I': f = open(log_path,"w") else: f = open(log_path,"a") f.write(filetext) f.write("\n") f.close() def sendEmail(v_status): port = 587 # For starttls smtp_server = "smtp.gmail.com" receiver_email = "test_recei...@gmail.com" sender_email = "test_sen...@gmail.com" password = "Test1234" if v_status == 'S': message = """\ GXS_OUTBOUND Ran the Python SFTP program.""" elif v_status == 'E': message = """\ GXS_OUTBOUND Issue with the Python SFTP program.Check Log Files.""" context = ssl.create_default_context() with smtplib.SMTP(smtp_server, port) as server: server.ehlo() # Can be omitted server.starttls(context=context) server.ehlo() # Can be omitted server.login(sender_email, password) server.sendmail(sender_email, receiver_email, message) timing=datetime.now() fcontent1 = 'Logging for today has started' write_to_file('I',"-") write_to_file('F',fcontent1) write_to_file('F',str(timing)) sl_cinfo = None ot_cinfo = None otsource = 'VENDOR' ebspath1 = 'UNKNOWN' otpath1 = 'UNKNOWN' ebssource = 'CLIENT' localfuspath = '/home/test/scripts/outbound/scm' localfuspath3 = '/home/test/scripts/outbound/outbound' shutil.rmtree(localfuspath) os.makedirs(localfuspath) vaultfile = open('/home/test/.vaulttoken', 'r') vault_token = vaultfile.read().strip() client = hvac.Client() client = hvac.Client(url='https://vault.comfort.com:8200', token=vault_token, verify='/home/test/vault-cert.crt') if client.is_authenticated(): print ('vault is authenticated') write_to_file('F','vault is authenticated') def file_t
Issue with PYSFTP - Working in WINSCP
Hi We have requirement where we need to get file from client path and then upload the same to vendor directory path. I am not able to upload the file to vendor directory path , however when I tried to use the WINSCP it worked fine. So I thought of checking with Gurus what is wrong I am doing in my script. Appreciate your input. I will attach my script. Here is what I am doing. Step1. Clear the client directory path Step2. Make a call to HVAC Vault to get the username and password for client and vendor server Step3. Use the username and password to establish connection using pysftp for client. Step4. Store the file in local path. Step5. Segregate the file into different path based on file type Step6 Establish a connection to vendor and copy the file to vendor. Step7 Close the client and Vendor connection Please see the file attached. Also below is the error which I am getting - ERROR:root:Error in getting the file from EBS Outbound Server Traceback (most recent call last): File "FILE_TRANSFER_PROCESS.py", line 191, in file_transfer vendor.put(src_file, dst_file) File "/d01/python3/lib64/python3.6/site-packages/pysftp/__init__.py", line 364, in put confirm=confirm) File "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line 759, in put return self.putfo(fl, remotepath, file_size, callback, confirm) File "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line 720, in putfo s = self.stat(remotepath) File "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line 493, in stat t, msg = self._request(CMD_STAT, path) File "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line 813, in _request return self._read_response(num) File "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line 865, in _read_response self._convert_status(msg) File "/d01/python3/lib64/python3.6/site-packages/paramiko/sftp_client.py", line 894, in _convert_status raise IOError(errno.ENOENT, text) FileNotFoundError: [Errno 2] /custom/OWO/ECE_OWO_20200303_143895.dat #!/usr/bin/python # -*- coding: utf-8 -*- import csv # from pysftp import Connection, CnOpts import os import sys import pysftp import logging import hvac import datetime from datetime import datetime import ssl import smtplib import shutil from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders def file_delete (dirs): write_to_file('F', 'The directory is '+dirs) for files in os.listdir(dirs): filed = dirs + "/" +files write_to_file('F','File is to be deleted '+filed) os.remove(filed) def write_to_file(mode,filetext): log_path = "/home/kishnx/scripts/log/sftp.log" if mode == 'I': f = open(log_path,"w") else: f = open(log_path,"a") f.write(filetext) f.write("\n") f.close() def sendEmail(v_status): port = 587 # For starttls smtp_server = "smtp.gmail.com" receiver_email = "test_recei...@gmail.com" sender_email = "test_sen...@gmail.com" password = "Test1234" if v_status == 'S': message = """\ GXS_OUTBOUND Ran the Python SFTP program.""" elif v_status == 'E': message = """\ GXS_OUTBOUND Issue with the Python SFTP program.Check Log Files.""" context = ssl.create_default_context() with smtplib.SMTP(smtp_server, port) as server: server.ehlo() # Can be omitted server.starttls(context=context) server.ehlo() # Can be omitted server.login(sender_email, password) server.sendmail(sender_email, receiver_email, message) timing=datetime.now() fcontent1 = 'Logging for today has started' write_to_file('I',"-") write_to_file('F',fcontent1) write_to_file('F',str(timing)) sl_cinfo = None ot_cinfo = None otsource = 'VENDOR' ebspath1 = 'UNKNOWN' otpath1 = 'UNKNOWN' ebssource = 'CLIENT' localfuspath = '/home/test/scripts/outbound/scm' localfuspath3 = '/home/test/scripts/outbound/outbound' shutil.rmtree(localfuspath) os.makedirs(localfuspath) vaultfile = open('/home/test/.vaulttoken', 'r') vault_token = vaultfile.read().strip() client = hvac.Client() client = hvac.Client(url='https://vault.comfort.com:8200', token=vault_token, verify='/home/test/vault-cert.crt') if client.is_authenticated(): print ('vault is authenticated') write_to_file('F','vault is authenticated') def file_transfer(sleep, vendor, paths): global localfusaropath1 global localfusowopath1 global localfusitempath1 global localfuspath1 # print("paths are ",paths[0],paths[1]) ebsBasePath = paths[0] localBasePath = path
Re: [Python-ideas] Re: Magnitude and ProtoMagnitude ABCs — primarily for argument validation
On Tue, 10 Mar 2020 at 13:41, Chris Angelico wrote: > It makes good sense for > division by 0 and division by 0.0 to both result in the same > exception. But Python 3 returns a float, for example, in division between integers. 4 / 2 == 2.0. So some_integer / +0 should return +Infinity. This is what IEEE 754 says. Luckily Python does not adhere completely to IEEE 754. Furthermore, there's a precedence in Python: decimal. decimal.Decimal does not returns NaN in any of the operations that should return it: https://en.wikipedia.org/wiki/NaN#Operations_generating_NaN On the contrary, it returns decimal.InvalidOperation. @Alan Bawden: thank you for letting me know about William Kahan. I think it's analysis of IEEE 754 is very detailed, and I didn't know that traps exist. And yes, I agree that traps and exceptions slows down the computation. But in a language like Python, when simplicity and usability is a priority, and when "no exception should pass silently", IMHO operations that returns NaN are only an heritage from C, since Python is written in C. PS: I'm quoting import this with Tim Peters in the discussion, to Alan Bawden... It's like teaching physics to Fermi. -- https://mail.python.org/mailman/listinfo/python-list
Re: Installation of python
*Ahem* I already posted the solution to your problem. I quote myself: I suppose you also downloaded the required sources from here: https://data.mendeley.com/datasets/s2x4d542dc/1 It seems the problem is that the above sources are generated by an old version of Cython: https://github.com/mcfletch/pyopengl/issues/11 You have "simply" to enter any subdir of PoissonSolver that ends with "_cy" and remove the .c file inside them. After that, you'll be able to compile. The result is three ELF files. On my PC, for example, one of the the generated shared libraries is PoissonSolver/PoissonSolver/ps3d.cpython-38-x86_64-linux-gnu.so You have also to rename them. Follow the README. On Mon, 9 Mar 2020 at 15:23, Tim Ko wrote: > > Hello, > > I am trying to install a custom Python package but ran into an error. The > error presumably associated with cython. I tried a different compiler since > Intel compiler often crashes when using cython, but couldn't get it working. > > Attached is the installation error log. I have installed and updated all > essential packages such as numpy and scipy. Could someone please give me > advice to resolve this issue? Many thanks in advance. > > Sincerely, > TK > > > === > $ python setup.py build_ext -b PoissonSolver/ > running build_ext > skipping 'PoissonSolver/MV_2D_cy/matvec2D.c' Cython extension (up-to-date) > skipping 'PoissonSolver/MV_1D_cy/matvec1D.c' Cython extension (up-to-date) > skipping 'PoissonSolver/PS_3D_cy/ps3d.c' Cython extension (up-to-date) > building 'matvec2D' extension > icc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC > -I/home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include > -I/home01/r782a03/.conda/envs/hko_env/include/python3.7m -c > PoissonSolver/MV_2D_cy/matvec2D.c -o > build/temp.linux-x86_64-3.7/PoissonSolver/MV_2D_cy/matvec2D.o -ffast-math > icc: command line warning #10006: ignoring unknown option '-ffast-math' > In file included from > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/ndarraytypes.h(1830), > from > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/ndarrayobject.h(12), > from > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/arrayobject.h(4), > from PoissonSolver/MV_2D_cy/matvec2D.c(232): > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h(17): > warning #1224: #warning directive: "Using deprecated NumPy API, disable it > with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" > #warning "Using deprecated NumPy API, disable it with " \ >^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17500): error: struct "_ts" has no field > "exc_type" > *type = tstate->exc_type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17501): error: struct "_ts" has no field > "exc_value" > *value = tstate->exc_value; >^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17502): error: struct "_ts" has no field > "exc_traceback" > *tb = tstate->exc_traceback; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17514): error: struct "_ts" has no field > "exc_type" > tmp_type = tstate->exc_type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17515): error: struct "_ts" has no field > "exc_value" > tmp_value = tstate->exc_value; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17516): error: struct "_ts" has no field > "exc_traceback" > tmp_tb = tstate->exc_traceback; >^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17517): error: struct "_ts" has no field > "exc_type" > tstate->exc_type = type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17518): error: struct "_ts" has no field > "exc_value" > tstate->exc_value = value; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17519): error: struct "_ts" has no field > "exc_traceback" > tstate->exc_traceback = tb; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17562): error: struct "_ts" has no field > "exc_type" > tmp_type = tstate->exc_type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17563): error: struct "_ts" has no field > "exc_value" > tmp_value = tstate->exc_value; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17564): error: struct "_ts" has no field > "exc_traceback" > tmp_tb = tstate->exc_traceback; >^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17565): error: struct "_ts" has no field > "exc_type" > tstate->exc_type = local_type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17566): error: struct "_ts" has no field > "exc_value" > tstate->exc_value = local_value; > ^ > > PoissonSol
Re: Python question
What about moving on to a social media app completely made in pythoj for python? On Wed, 11 Mar, 2020, 12:36 am DL Neil via Python-list, < python-list@python.org> wrote: > On 11/03/20 7:34 AM, Michael Torrie wrote: > > On 3/10/20 6:40 AM, Chris Angelico wrote: > >> On Tue, Mar 10, 2020 at 11:22 PM Marco Sulla via Python-list > ... > > >> I'm also reading this in Gmail, and I didn't get any such warning. I'm > >> going to call that a spurious warning, a false positive. > > > > Gmail often reports this about Python list messages because they are > > being sent through Python's mailing list servers but have the From > > address showing up as the poster's email address. > > > > Shows that Google's "my way or the highway" approach to security is > > problematic when it comes to traditional internet services like > > listservs. To say nothing of how they break mailing lists by throwing > > out your own messages to the list. Google products are definitely > > getting more and more frustrating for us traditional users. > > +1 > > ...and any right-of-reply is basically-hidden and then swathed in all > manner of bureaucracy - which is why it not worth our long-suffering > ListAdmins' (thanks guys!) time to attempt a fix! > > OT: Google is not the only over-large and over-bearing outfit... > > -- > Regards =dn > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list
Re: Python question
On 11/03/20 7:34 AM, Michael Torrie wrote: On 3/10/20 6:40 AM, Chris Angelico wrote: On Tue, Mar 10, 2020 at 11:22 PM Marco Sulla via Python-list ... I'm also reading this in Gmail, and I didn't get any such warning. I'm going to call that a spurious warning, a false positive. Gmail often reports this about Python list messages because they are being sent through Python's mailing list servers but have the From address showing up as the poster's email address. Shows that Google's "my way or the highway" approach to security is problematic when it comes to traditional internet services like listservs. To say nothing of how they break mailing lists by throwing out your own messages to the list. Google products are definitely getting more and more frustrating for us traditional users. +1 ...and any right-of-reply is basically-hidden and then swathed in all manner of bureaucracy - which is why it not worth our long-suffering ListAdmins' (thanks guys!) time to attempt a fix! OT: Google is not the only over-large and over-bearing outfit... -- Regards =dn -- https://mail.python.org/mailman/listinfo/python-list
Re: Python question
On 3/10/20 6:40 AM, Chris Angelico wrote: > On Tue, Mar 10, 2020 at 11:22 PM Marco Sulla via Python-list >> I would reply, but I was already too much off topic. I want only to >> write what Gmail reports to me about the last message of the person >> that started this discussion: >> >>> This message seems dangerous >>> Many people marked similar messages as phishing scams, so this might >>> contain unsafe content. Avoid clicking links, downloading attachments or >>> replying with personal information. >> >> I never saw this message before in Gmail. Didn't your Gmail warned >> about this, Souvik Dutta? >> > > I'm also reading this in Gmail, and I didn't get any such warning. I'm > going to call that a spurious warning, a false positive. Gmail often reports this about Python list messages because they are being sent through Python's mailing list servers but have the From address showing up as the poster's email address. Shows that Google's "my way or the highway" approach to security is problematic when it comes to traditional internet services like listservs. To say nothing of how they break mailing lists by throwing out your own messages to the list. Google products are definitely getting more and more frustrating for us traditional users. -- https://mail.python.org/mailman/listinfo/python-list
Re: How does the super type present itself and do lookups?
On Tuesday, March 10, 2020 at 9:28:11 AM UTC-5, Peter Otten wrote: > self.foo looks up the attribute in the instance, falls back to the class and > then works its way up to the parent class, whereas > > super().foo bypasses both instance and class, and starts its lookup in the > parent class. Is this foo attribute being looked up in an override of __getattr__, __getattribute__, or is it a reserved slot that's internally doing this? That's what I'm trying to figure out. -- https://mail.python.org/mailman/listinfo/python-list
Re: Python question
On Tue, Mar 10, 2020 at 11:22 PM Marco Sulla via Python-list wrote: > > On Fri, 6 Mar 2020 at 17:30, Souvik Dutta wrote: > > And you cannot form opinions for > > other people's by saying them not to support a person. That is injustice > > and rude. > > I would reply, but I was already too much off topic. I want only to > write what Gmail reports to me about the last message of the person > that started this discussion: > > > This message seems dangerous > > Many people marked similar messages as phishing scams, so this might > > contain unsafe content. Avoid clicking links, downloading attachments or > > replying with personal information. > > I never saw this message before in Gmail. Didn't your Gmail warned > about this, Souvik Dutta? > I'm also reading this in Gmail, and I didn't get any such warning. I'm going to call that a spurious warning, a false positive. ChrisA -- https://mail.python.org/mailman/listinfo/python-list
Re: How does the super type present itself and do lookups?
> On 4 Mar 2020, at 17:12, Adam Preble wrote: > > Months ago, I asked a bunch of stuff about super() and managed to fake it > well enough to move on to other things for awhile. The day of reckoning came > this week and I was forced to implement it better for my personal Python > project. I have a hack in place that makes it work well-enough but I found > myself frustrated with how shift the super type is. It's both the self and > the parent class, but not. > > If you don't know, you can trap what super() returns some time and poke it > with a stick. If you print it you'll be able to tell it's definitely unique: > , > > > If you try to invoke methods on it, it'll invoke the superclass' methods. > That's what is supposed to happen and basically what already happens when you > do super().invoke_this_thing() anyways. > > Okay, so how is it doing the lookup for that? The child instance and the > super types' __dict__ are the same. The contents pass an equality comparison > and are the same if you print them. Do you know about the Method Resolution Order (MRO) that is in __class__.__mro__)? I was very confused by super() until I found out about the MRO. When you call super() it finds where the code is in the MRO and then starts looking for a method in classes before the calling class. The following code shows this: class A: def __init__(self): super().__init__() def fn(self): return 'A.fn' class B(A): def __init__(self): super().__init__() class C(B): def __init__(self): super().__init__() def fn(self): return 'C.fn and super().fn is %r with value %r' % (super().fn, super().fn()) class D(C): def __init__(self): super().__init__() print(D.__mro__) obj = D() print( obj.fn() ) When it is run it prints: (, , , , ) C.fn and super().fn is > with value 'A.fn' When fn() is called on obj the version of fn() in class C is called. That fn() calls the super().fn and the second print shows that its the class A fn that is found called. super starts with the next class after the one it is called in. It is in C so find C in the MRO and starts with B. B does not have an fn(). Then it looks in A and finds fn(). Is this what you are looking for? Barry > > They have the same __getattribute__ method wrapper. However, if you dir() > them you definitely get different stuff. For one, the super type has its > special variables __self__, __self_class__, and __thisclass__. It's missing > __dict__ from the dir output. But wait, I just looked at that! > > So I'm thinking that __getattr__ is involved, but it's not listed in > anything. If I use getattr on the super, I'll get the parent methods. If I > use __getattribute__, I get the child's methods. I get errors every way I've > conceived of trying to pull out a __getattr__ dunder. No love. > > I guess the fundamental question is: what different stuff happens when > LOAD_ATTR is performed on a super object versus a regular object? > > If you are curious about what I'm doing right now, I overrode > __getattribute__ since that's primarily what I use for attribute lookups > right now. It defer to the superclass' __getattribute__. If a method pops > out, it replaces the self with the super's __self__ before kicking it out. I > feel kind of dirty doing it: > > https://github.com/rockobonaparte/cloaca/blob/312758b2abb80320fb3bf344ba540a034875bc4b/LanguageImplementation/DataTypes/PySuperType.cs#L36 > > If you want to see how I was experimenting with super, here's the code and > output: > > class Parent: >def __init__(self): >self.a = 1 > >def stuff(self): >print("Parent stuff!") > > > class Child(Parent): >def __init__(self): >super().__init__() >self.b = 2 >self.super_instance = super() > >def stuff(self): >print("Child stuff!") > >def only_in_child(self): >print("Only in child!") > > > c = Child() > c.super_instance.__init__() > c.stuff() > c.super_instance.stuff() > print(c) > print(c.super_instance) > print(c.__init__) > print(c.super_instance.__init__) > print(c.stuff) > print(c.super_instance.stuff) > print(c.__getattribute__) > print(c.super_instance.__getattribute__) > print(dir(c)) > print(dir(c.super_instance)) > print(c.__dict__ == c.super_instance.__dict__) > print(getattr(c, "__init__")) > print(getattr(c.super_instance, "__init__")) > print(c.__getattribute__("__init__")) > print(c.super_instance.__getattribute__("__init__")) > > > > Child stuff! > Parent stuff! > <__main__.Child object at 0x026854D99828> > , > > > > 0x026854D99828>> > > > > > > > ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', > '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', > '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', > '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', > '__str
Re: Lock acquisition by the same thread - deadlock protection
> On 9 Mar 2020, at 22:53, Yonatan Goldschmidt > wrote: > > I recently debugged a program hang, eventually finding out it's a deadlock of > a single thread, > resulting from my usage of 2 libraries. One of them - call it library A - is > reentrant & runs code in > GC finalizers, while the other - library B - is not reentrant at all. > Library B held one of its `threading.Lock` locks, and during this period, GC > was invoked, running > finalizers of library A which call back into library B, now attempting to > take the lock again, > locking the thread forever. > > Considering how relatively common this scenario might be (Python, by design, > can preempt any user code > to run some other user code, due to GC finalizers), I was surprised Python > code is not protected > from this simple type of deadlock. It makes sense that while > `threading.RLock` allows for recursive > locking, `threading.Lock` will prevent it - raising an exception if you > attempt it. > > I might be missing something, but why isn't it the status? Why taking a > `threading.Lock` twice from > the same thread just hangs, instead of raising a friendly exception? > I ran a quick search in bpo but found nothing about this topic. I also tried > to > search this mailing list but couldn't find how to, so I grepped a few random > archives > but found nothing about it. > > Would be happy if anyone could shed some light on it... threading.Lock is not reentrant and its implementation does not allow detection of the problem from what I recall. In this case the code might want to use the threading.RLock that is reentrant. Of course there may be other issues in the code that prevent the finalizers working if it holds the lock. Barry -- https://mail.python.org/mailman/listinfo/python-list
Re: Installation of python
On Mon, Mar 9, 2020 at 7:20 AM Tim Ko wrote: > Hello, > > I am trying to install a custom Python package but ran into an error. The > error presumably associated with cython. I tried a different compiler since > Intel compiler often crashes when using cython, but couldn't get it > working. > Does this help? https://github.com/cython/cython/wiki/CythonExtensionsOnWindows I'm just guessing. I very infrequently use Windows. -- https://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Re: Magnitude and ProtoMagnitude ABCs — primarily for argument validation
Chris Angelico writes: > People keep saying this - that nan exists to avoid exceptions - but > that doesn't take signalling nans into account. Even in C, they are > expected to raise an exception or equivalent. Actually, its not that far from the truth to say that NaNs "exist to avoid exceptions". According to Kahan, NaNs were an improvement over previous NaN-like mechanisms that existed in older computer hardware precisely because they avoid exceptions. Kahan says of those older mechanisms: "But nobody used them because they trap when touched." I believe that signalling NaNs were added to the IEEE standard late in the process because people still wanted something you could store in a uninitialized variable that would trap if you accidentally used it. Unlike all the IEEE operations that result in a NaN, using an uninitialized variable is clearly an error. Kahan doesn't think much of signalling NaNs, writing that they "exist mainly for political reasons and are rarely used". -- Alan Bawden -- https://mail.python.org/mailman/listinfo/python-list
[RELEASE] Python 3.7.7 is now available
https://discuss.python.org/t/python-3-7-7-is-now-available/3682 https://www.python.org/downloads/release/python-377/ -- Ned Deily n...@python.org -- [] -- https://mail.python.org/mailman/listinfo/python-list
Re: How does the super type present itself and do lookups?
Adam Preble wrote: > If you don't know, you can trap what super() returns some time and poke it > with a stick. If you print it you'll be able to tell it's definitely > unique: , > > > If you try to invoke methods on it, it'll invoke the superclass' methods. > That's what is supposed to happen and basically what already happens when > you do super().invoke_this_thing() anyways. > > Okay, so how is it doing the lookup for that? The child instance and the > super types' __dict__ are the same. The contents pass an equality > comparison and are the same if you print them. I think the fundamental insight is that given class A: foo = "A" class B(A): foo = "B" def super_foo(self): return super().foo def my_foo(self): return self.foo b = B() b.foo = "inst" print(b.super_foo()) # A print(b.my_foo()) # inst del b.foo print(b.my_foo()) # B del B.foo print(b.my_foo()) # A self.foo looks up the attribute in the instance, falls back to the class and then works its way up to the parent class, whereas super().foo bypasses both instance and class, and starts its lookup in the parent class. -- https://mail.python.org/mailman/listinfo/python-list
Re: Is there something similar to guidechimp in python?
суббота, 7 марта 2020 г., 4:11:53 UTC+1 пользователь Souvik Dutta написал: > This is guidechimp -https://github.com/Labs64/GuideChimp > Is there anything similar to this in python? GuideChimp is a JavaScript library which can be integrated by adding js/css ressources to any web application. Please refer to https://github.com/Labs64/GuideChimp/wiki/Install#1-using-from-a-cdn to get the CDN ressources. Having that, you can actually use GuideChimp not only with Python application, but also with React, Vue.js, Angulat, PHP (Laravel) and many others. Hope that helps -- https://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Re: Magnitude and ProtoMagnitude ABCs — primarily for argument validation
On Tue, Mar 10, 2020 at 11:16 PM Marco Sulla via Python-list wrote: > Raising a NanError seems to me the only way to eliminate the NaN > problem. Indeed NaN was created for languages like C, that does not > support exceptions. People keep saying this - that nan exists to avoid exceptions - but that doesn't take signalling nans into account. Even in C, they are expected to raise an exception or equivalent. Python raises an exception for float division by zero because Python does its best to treat smallish integers and integral floats as equivalent. (Yes, I'm using "smallish" to mean "less than nine quadrillion"... programmers have weird ideas about magnitude sometimes.) Apart from indexing, the values 3 and 3.0 should be able to be used pretty much interchangeably. They compare equal (which, in turn, implies that they have the same hash), they behave very similarly in arithmetic, etc, etc, etc. It makes good sense for division by 0 and division by 0.0 to both result in the same exception. It also makes sense for integer division to raise rather than return a float (since "x // y" between two ints will never otherwise be a float). So it'd be nastily inconsistent to return a NaN for float division by zero. ChrisA -- https://mail.python.org/mailman/listinfo/python-list
Re: Error while installing a python code
Little errata: you have only to install or update Cython, remove the .c files as I wrote before and run again python setup.py build_ext -b PoissonSolver/ No intermediate steps are required. The generated ELF files are three. You have also to rename them with the names in the README file. On Mon, 9 Mar 2020 at 22:36, Marco Sulla wrote: > > I suppose you tried to use this setup.py: > https://github.com/breathe/coffee_conda_package/blob/master/0001-Add-alternative-setup.py-script.patch > > It's not well written IMHO... anyway this is not the problem. > > I suppose you also downloaded the required sources from here: > https://data.mendeley.com/datasets/s2x4d542dc/1 > > It seems the problem is that the above sources are generated by an old > version of Cython: > > https://github.com/mcfletch/pyopengl/issues/11 > > You have "simply" to enter any subdir of PoissonSolver that ends with > "_cy", remove the .c file inside and do: > python setup.py build_ext --inplace > > After that, you'll be able to compile. The result is an ELF file. On > my PC, the generated file is > PoissonSolver/PoissonSolver/ps3d.cpython-38-x86_64-linux-gnu.so > > On Mon, 9 Mar 2020 at 15:27, Tim Ko wrote: > > > > Hello, > > > > I am trying to install a custom Python code but ran into an error. The > > error presumably associated with cython. I tried a different compiler since > > Intel compiler often crashes when using cython, but couldn't get it working. > > > > Attached is the installation error log. I have installed and updated all > > essential packages such as numpy and scipy. Could someone please give me > > advice to resolve this issue? Many thanks in advance. > > > > Sincerely, > > TK > > > > > > === > > $ python setup.py build_ext -b PoissonSolver/ > > running build_ext > > skipping 'PoissonSolver/MV_2D_cy/matvec2D.c' Cython extension (up-to-date) > > skipping 'PoissonSolver/MV_1D_cy/matvec1D.c' Cython extension (up-to-date) > > skipping 'PoissonSolver/PS_3D_cy/ps3d.c' Cython extension (up-to-date) > > building 'matvec2D' extension > > icc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC > > -I/home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include > > -I/home01/r782a03/.conda/envs/hko_env/include/python3.7m -c > > PoissonSolver/MV_2D_cy/matvec2D.c -o > > build/temp.linux-x86_64-3.7/PoissonSolver/MV_2D_cy/matvec2D.o -ffast-math > > icc: command line warning #10006: ignoring unknown option '-ffast-math' > > In file included from > > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/ndarraytypes.h(1830), > > from > > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/ndarrayobject.h(12), > > from > > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/arrayobject.h(4), > > from PoissonSolver/MV_2D_cy/matvec2D.c(232): > > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h(17): > > warning #1224: #warning directive: "Using deprecated NumPy API, disable it > > with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" > > #warning "Using deprecated NumPy API, disable it with " \ > >^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17500): error: struct "_ts" has no field > > "exc_type" > > *type = tstate->exc_type; > > ^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17501): error: struct "_ts" has no field > > "exc_value" > > *value = tstate->exc_value; > >^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17502): error: struct "_ts" has no field > > "exc_traceback" > > *tb = tstate->exc_traceback; > > ^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17514): error: struct "_ts" has no field > > "exc_type" > > tmp_type = tstate->exc_type; > > ^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17515): error: struct "_ts" has no field > > "exc_value" > > tmp_value = tstate->exc_value; > > ^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17516): error: struct "_ts" has no field > > "exc_traceback" > > tmp_tb = tstate->exc_traceback; > >^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17517): error: struct "_ts" has no field > > "exc_type" > > tstate->exc_type = type; > > ^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17518): error: struct "_ts" has no field > > "exc_value" > > tstate->exc_value = value; > > ^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17519): error: struct "_ts" has no field > > "exc_traceback" > > tstate->exc_traceback = tb; > > ^ > > > > PoissonSolver/MV_2D_cy/matvec2D.c(17562): error: struct "_ts" has no field > > "exc_type" > > tmp_type = tstate->exc_type; > > ^ > > > >
Re: Python question
On Fri, 6 Mar 2020 at 17:30, Souvik Dutta wrote: > And you cannot form opinions for > other people's by saying them not to support a person. That is injustice > and rude. I would reply, but I was already too much off topic. I want only to write what Gmail reports to me about the last message of the person that started this discussion: > This message seems dangerous > Many people marked similar messages as phishing scams, so this might contain > unsafe content. Avoid clicking links, downloading attachments or replying > with personal information. I never saw this message before in Gmail. Didn't your Gmail warned about this, Souvik Dutta? -- https://mail.python.org/mailman/listinfo/python-list
Re: pip UX Studies - help improve the usability of pip
On Mon, 9 Mar 2020 at 16:09, Paul Moore wrote: > We've had some questions as to whether this survey is legitimate. I > can confirm it is (speaking as a pip core developer). Thank you a lot! -- https://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Re: New explicit methods to trim strings
I agree with Steven D'Aprano. I never had problems with strip(), but if people find it confusing, Python can simply leave strip() and all the other function as they are and add another functions, like crop() or snip() or shear() prune() or mow(). Personally I prefer crop() or prune(). This way there will be no breaking changes. On Sat, 7 Mar 2020 at 02:58, Ethan Furman wrote: > > On 03/06/2020 04:03 PM, Steven D'Aprano wrote: > > On Thu, Mar 05, 2020 at 12:45:28PM -0800, Andrew Barnert via Python-ideas > > wrote: > > >> Well, I like the idea if someone can come up with a good naming > >> scheme—something that at least reminds me which function is the “set > >> of chars” stripper and which the “substring” stripper, > > > > You've been a Python programmer for how many years now? Do you currently > > have trouble remembering what lstrip and rstrip do? > > Speaking for myself, about 13 years. And, yes, I do occasionally forget that > the strips are character based. I can easily imagine it's worse for polyglot > programmers. > > > > We already have `[l|r]strip` methods. If we want to associate the new > > methods with those, I suggest > > > > strip_prefix > > strip_suffix > > Works for me. Easy to add to bytes, too, if somebody is so inclined. > > -- > ~Ethan~ > ___ > Python-ideas mailing list -- python-id...@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-id...@python.org/message/JKBILM3G2C4TQ7XEVIH3V7M7CKCJ4R6Y/ > Code of Conduct: http://python.org/psf/codeofconduct/ -- https://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Re: Magnitude and ProtoMagnitude ABCs — primarily for argument validation
I think that implementing TotallyOrderable and PartiallyOrderable is a good idea. But is it useful? I mean, I don't know how much people needs really to order sets. Maybe some mathematician. But they can simply use Sage: http://doc.sagemath.org/html/en/reference/categories/sage/categories/posets.html The real problem is NaN. If NaN would not exists, floats will be perfectly total orderable. Yes, IEEE 754-2019 defines a total order: -NaN is a number minor that -Infinity, and +NaN is a number greater than +Infinity. And a NaN is greater than another NaN if its payload is greater. But IEEE 754 says also that the division by +0 should return +Infinity, and by -0 -Infinity. On the contrary, Python decided to not adhere to IEEE 754 in this case and do a very wise choice: raise an exception. The question is: why Python does not do the same for operations that now return NaN? Raising a NanError seems to me the only way to eliminate the NaN problem. Indeed NaN was created for languages like C, that does not support exceptions. -- https://mail.python.org/mailman/listinfo/python-list
Re: pip UX Studies - help improve the usability of pip
Hi Marco, Certainly. If you trust the validity of the Python Software Foundation's twitter feed, you can see they retweeted my call: https://twitter.com/ThePSF Alternatively if you reply to the list and ask Paul, Pradyun, Tzu-Ping or contact Sumana, the PM they'll be able to confirm it. Have I answered your question sufficiently? Regards, Bernard On 07/03/2020 11:21, Marco Sulla wrote: > There's someone of the pip team that can confirm this? > > On Sat, 7 Mar 2020 at 02:49, Bernard Tyers - Sane UX Design > wrote: >> >> Hi there, >> >> My name is Bernard Tyers. I'm a UX designer and have recently started >> working on the PSF project to improve the usability of pip, funded by >> MOSS/CZI. >> >> I want to let you know about the pip UX Studies we've started today, and >> encourage you to sign-up and take part. >> >> The pip Team is looking for Python users who use pip to take part in our >> UX Studies. Your input will have a direct impact on improving pip. >> >> We want to speak with as diverse a group as possible. We'd particularly >> like to speak with people with accessibility needs. >> >> You _don't_ have to be a Python expert to take part - I can't stress >> this enough! >> >> You can find out all the details you'll need and find the sign-up link >> on this blogpost: >> >> http://www.ei8fdb.org/thoughts/2020/03/pip-ux-study-recruitment/ >> >> If you do have questions I've not answered there, let me know. >> >> We'd also appreciate some signal boosting to reach as wide an audience >> as possible. Please share the blog post with people in different Python >> using communities. >> >> If you're a Twitter/Mastodon user we'd appreciate a signal boost of >> these also: >> >> https://twitter.com/bernardtyers/status/123603961730017 >> https://social.ei8fdb.org/@bernard/103778645553767728 >> >> >> Thank you for your attention! >> >> Best wishes, >> >> Bernard >> -- >> >> Bernard Tyers, User research & Interaction Design >> >> T: @bernardtyers >> M: @bern...@social.ei8fdb.org >> PGP Key: keybase.io/ei8fdb >> >> >> I work on User-Centred Design, Open Source Software and Privacy. >> -- >> https://mail.python.org/mailman/listinfo/python-list -- Bernard Tyers, User research & Interaction Design Sane UX Design Twitter: @bernardtyers PGP Key: keybase.io/ei8fdb I am currently working with the Python Foundation, and Open Technology Fund -- https://mail.python.org/mailman/listinfo/python-list
Re: [Python-ideas] Re: Magnitude and ProtoMagnitude ABCs — primarily for argument validation
[Marco Sulla ] > Excuse me, Tim Peters, what do you think about my (probably heretical) > proposal of simply raising an exception instead of return a NaN, like > Python already do for division by zero? Sorry, I'm missing context. I don't see any other message(s) from you in this thread, so don't know what you mean. The message of mine you're replying to here said nothing about exceptions or NaNs. -- https://mail.python.org/mailman/listinfo/python-list
Re: Error while installing a python code
I suppose you tried to use this setup.py: https://github.com/breathe/coffee_conda_package/blob/master/0001-Add-alternative-setup.py-script.patch It's not well written IMHO... anyway this is not the problem. I suppose you also downloaded the required sources from here: https://data.mendeley.com/datasets/s2x4d542dc/1 It seems the problem is that the above sources are generated by an old version of Cython: https://github.com/mcfletch/pyopengl/issues/11 You have "simply" to enter any subdir of PoissonSolver that ends with "_cy", remove the .c file inside and do: python setup.py build_ext --inplace After that, you'll be able to compile. The result is an ELF file. On my PC, the generated file is PoissonSolver/PoissonSolver/ps3d.cpython-38-x86_64-linux-gnu.so On Mon, 9 Mar 2020 at 15:27, Tim Ko wrote: > > Hello, > > I am trying to install a custom Python code but ran into an error. The error > presumably associated with cython. I tried a different compiler since Intel > compiler often crashes when using cython, but couldn't get it working. > > Attached is the installation error log. I have installed and updated all > essential packages such as numpy and scipy. Could someone please give me > advice to resolve this issue? Many thanks in advance. > > Sincerely, > TK > > > === > $ python setup.py build_ext -b PoissonSolver/ > running build_ext > skipping 'PoissonSolver/MV_2D_cy/matvec2D.c' Cython extension (up-to-date) > skipping 'PoissonSolver/MV_1D_cy/matvec1D.c' Cython extension (up-to-date) > skipping 'PoissonSolver/PS_3D_cy/ps3d.c' Cython extension (up-to-date) > building 'matvec2D' extension > icc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC > -I/home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include > -I/home01/r782a03/.conda/envs/hko_env/include/python3.7m -c > PoissonSolver/MV_2D_cy/matvec2D.c -o > build/temp.linux-x86_64-3.7/PoissonSolver/MV_2D_cy/matvec2D.o -ffast-math > icc: command line warning #10006: ignoring unknown option '-ffast-math' > In file included from > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/ndarraytypes.h(1830), > from > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/ndarrayobject.h(12), > from > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/arrayobject.h(4), > from PoissonSolver/MV_2D_cy/matvec2D.c(232): > /home01/r782a03/.conda/envs/hko_env/lib/python3.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h(17): > warning #1224: #warning directive: "Using deprecated NumPy API, disable it > with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" > #warning "Using deprecated NumPy API, disable it with " \ >^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17500): error: struct "_ts" has no field > "exc_type" > *type = tstate->exc_type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17501): error: struct "_ts" has no field > "exc_value" > *value = tstate->exc_value; >^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17502): error: struct "_ts" has no field > "exc_traceback" > *tb = tstate->exc_traceback; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17514): error: struct "_ts" has no field > "exc_type" > tmp_type = tstate->exc_type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17515): error: struct "_ts" has no field > "exc_value" > tmp_value = tstate->exc_value; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17516): error: struct "_ts" has no field > "exc_traceback" > tmp_tb = tstate->exc_traceback; >^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17517): error: struct "_ts" has no field > "exc_type" > tstate->exc_type = type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17518): error: struct "_ts" has no field > "exc_value" > tstate->exc_value = value; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17519): error: struct "_ts" has no field > "exc_traceback" > tstate->exc_traceback = tb; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17562): error: struct "_ts" has no field > "exc_type" > tmp_type = tstate->exc_type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17563): error: struct "_ts" has no field > "exc_value" > tmp_value = tstate->exc_value; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17564): error: struct "_ts" has no field > "exc_traceback" > tmp_tb = tstate->exc_traceback; >^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17565): error: struct "_ts" has no field > "exc_type" > tstate->exc_type = local_type; > ^ > > PoissonSolver/MV_2D_cy/matvec2D.c(17566): error: struct "_ts" has no field > "exc_val
Re: pip UX Studies - help improve the usability of pip
There's someone of the pip team that can confirm this? On Sat, 7 Mar 2020 at 02:49, Bernard Tyers - Sane UX Design wrote: > > Hi there, > > My name is Bernard Tyers. I'm a UX designer and have recently started > working on the PSF project to improve the usability of pip, funded by > MOSS/CZI. > > I want to let you know about the pip UX Studies we've started today, and > encourage you to sign-up and take part. > > The pip Team is looking for Python users who use pip to take part in our > UX Studies. Your input will have a direct impact on improving pip. > > We want to speak with as diverse a group as possible. We'd particularly > like to speak with people with accessibility needs. > > You _don't_ have to be a Python expert to take part - I can't stress > this enough! > > You can find out all the details you'll need and find the sign-up link > on this blogpost: > > http://www.ei8fdb.org/thoughts/2020/03/pip-ux-study-recruitment/ > > If you do have questions I've not answered there, let me know. > > We'd also appreciate some signal boosting to reach as wide an audience > as possible. Please share the blog post with people in different Python > using communities. > > If you're a Twitter/Mastodon user we'd appreciate a signal boost of > these also: > > https://twitter.com/bernardtyers/status/123603961730017 > https://social.ei8fdb.org/@bernard/103778645553767728 > > > Thank you for your attention! > > Best wishes, > > Bernard > -- > > Bernard Tyers, User research & Interaction Design > > T: @bernardtyers > M: @bern...@social.ei8fdb.org > PGP Key: keybase.io/ei8fdb > > > I work on User-Centred Design, Open Source Software and Privacy. > -- > https://mail.python.org/mailman/listinfo/python-list -- https://mail.python.org/mailman/listinfo/python-list
Re: pip UX Studies - help improve the usability of pip
Subscribed. I have a little suggestion IMHO "What is you favourite pip command or functionality?" is not very useful... of course the most useful command is "install" :-) -- https://mail.python.org/mailman/listinfo/python-list
Re: The Real-Time Use of Python in Data Science World!
Why they are ads on this mailing list ? ‐‐‐ Original Message ‐‐‐ Le samedi 7 mars 2020 06:39, a écrit : > Besant Technologies providing Python Training in Chennai with expert guidance > and fully hands-on classes. Python is a high-level programming language > sometimes it also denoted as the scripting language as it provides rapid & > fast development and easy of use. Our Python Training in Chennai package also > includes job placement assistance, which is really a bonus point for > students. We also help students in getting a good job by conducting > interviews of ours with good IT companies and MNCs too. > > https://www.besanttechnologies.com/training-courses/python-training-institute-in-chennai > > -- > > Python-announce-list mailing list -- python-announce-l...@python.org > To unsubscribe send an email to python-announce-list-le...@python.org > https://mail.python.org/mailman3/lists/python-announce-list.python.org/ > > Support the Python Software Foundation: > http://www.python.org/psf/donations/ signature.asc Description: OpenPGP digital signature -- https://mail.python.org/mailman/listinfo/python-list