Re: email automation

2018-10-23 Thread Ali Rıza KELEŞ
On Tue, 23 Oct 2018 at 09:07, Thomas Jollans  wrote:
> > After some basic research I have a few options:
> >
> >  1. Grapple with OpenEMM (interesting software, has python library, 
> > still alive and kicking, a bit overkill for my use-case);
> >  2. build on the examples in 'Automate the boring stuff';
>
> From briefly skimming the relevant section, it looks like this gives
> some examples with smtplib and imaplib. That sounds like a good place to
> start!
>
> If you happen to have a server (VPS, Raspberry Pi, PC, whatever) running
> a full MTA that you can forward your emails to, you could feed the
> relevant messages to your script directly with the help of procmail,
> rather than polling an IMAP server.

+1

I experienced procmail and worked like a charm for me, in a case like
yours. My script was parsing emails to grab some URIs of binary
objects and queue them to be processed later.

You can easily trigger a python script and do whatever you need in
that script. If it is a long term process, you should just parse email
and use queues for the rest.

-- 
--
Ali Rıza Keleş
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: python3 byte decode

2017-11-07 Thread Ali Rıza KELEŞ
Hi,

On 5 November 2017 at 04:06, Cameron Simpson <c...@cskk.id.au> wrote:
> On 04Nov2017 01:47, Chris Angelico <ros...@gmail.com> wrote:
>>
>> On Fri, Nov 3, 2017 at 8:24 PM, Ali Rıza KELEŞ <ali.r.ke...@gmail.com>
>> wrote:
>>>
>>> Yesterday, while working with redis, i encountered a strange case.
>>>
>>> I want to ask why is the following `True`
>>>
>>> ```
>>> "s" is b"s".decode()
>>> ```
>>>
>>> while the followings are `False`?
>>>
>>> ```
>>> "so" is b"so".decode()
>>> "som" is b"som".decode()
>>> "some" is b"some".decode()
>>> ```
>>>
>>> Or vice versa?
>>>
>>> I read that `is` compares same objects, not values. So my question is
>>> why "s" and b"s".decode() are same objects, while the others aren't?
>>>
>>> My python version is 3.6.3.


> For speed and memory reasons, Python notices small values of strings and
> ints, and allocates them only once. So When your write:
>
>  a = "s"
>  b = "s"
>
> Python will reuse the same str object for both. Because of this, not only is
> "a == b" (i.e. they have the same value) but also "a is b" (a and b refer to
> the same object). But this is not guarrenteed, and certainly for larger
> values Python doesn't bother. Eg:

Actually I guessed that it should be a caching mechanism or something
like, but i was not sure since I do not know python internals in
detail.


>> You shouldn't be comparing string objects with 'is'. Sometimes two
>> equal strings will be identical, and sometimes they won't. All you're
>> seeing is that the interpreter happened to notice and/or cache this
>> particular lookup.
>
>
> To be more clear here, usually when humans say "identical" they mean having
> exactly the same value or attributes.
> Here, Chris means that the two strings are actually the same object rather
> than two equivalent objects. "is" tests the former (the same object). "=="
> is for testing the latter (the objects have the same value).

Initially the 'is' compared returned value with None, I changed the
code and it remained as is. After i have noticed this issue.

Using `is` to compare with None  is OK, isn't it?

Cameron, Terry, Chris thanks for your replies in depth.

-
Ali Riza

>>
>>

>
>
>  a = "ghghghghghg"
>  b = "ghghghghghg"
>
> Here they will have the same value but be different objects. So "==" will
> still return True, but "is" would return False.
>
> You should usually be using "==" to compare things. "is" has its place, but
> it is usually not what you're after.
>
> In your example code, b"s".decode() returns the string value "s", and Python
> is internally deciding to reuse the existing "s" from the left half of your
> comparison. It can do this because strings are immutable. (For example, "+="
> on a string makes a new string).
>
> Hoping this is now more clear,
> Cameron Simpson <c...@cskk.id.au> (formerly c...@zip.com.au)
> --
> https://mail.python.org/mailman/listinfo/python-list



-- 
--
Ali Rıza Keleş
-- 
https://mail.python.org/mailman/listinfo/python-list


python3 byte decode

2017-11-03 Thread Ali Rıza KELEŞ
Hi,

Yesterday, while working with redis, i encountered a strange case.

I want to ask why is the following `True`

```
"s" is b"s".decode()
```

while the followings are `False`?

```
"so" is b"so".decode()
"som" is b"som".decode()
"some" is b"some".decode()
```

Or vice versa?

I read that `is` compares same objects, not values. So my question is
why "s" and b"s".decode() are same objects, while the others aren't?

My python version is 3.6.3.

Thanks.

-- 
--
Ali Rıza Keleş
-- 
https://mail.python.org/mailman/listinfo/python-list