<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wikiprogramming.alfredgg.dev/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wikiprogramming.alfredgg.dev/feed.php">
        <title>Programming wiki2:python</title>
        <description></description>
        <link>https://wikiprogramming.alfredgg.dev/</link>
        <image rdf:resource="https://wikiprogramming.alfredgg.dev/lib/tpl/dokuwiki/images/favicon.ico" />
       <dc:date>2026-05-13T10:15:43+0000</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:basic&amp;rev=1631456164&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:basic_django&amp;rev=1612809866&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:code_notes&amp;rev=1592647374&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:fabtools&amp;rev=1589016310&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:flake8&amp;rev=1589016310&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:flask&amp;rev=1589016310&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:jinja2&amp;rev=1589016310&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:libraries&amp;rev=1619263316&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:medium_django&amp;rev=1589016310&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:mongoengine&amp;rev=1589016310&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:notes&amp;rev=1642236084&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:pymongo&amp;rev=1589016310&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:sqlalchemy&amp;rev=1606917168&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:tooling&amp;rev=1666984484&amp;do=diff"/>
                <rdf:li rdf:resource="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:typing&amp;rev=1665601380&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wikiprogramming.alfredgg.dev/lib/tpl/dokuwiki/images/favicon.ico">
        <title>Programming</title>
        <link>https://wikiprogramming.alfredgg.dev/</link>
        <url>https://wikiprogramming.alfredgg.dev/lib/tpl/dokuwiki/images/favicon.ico</url>
    </image>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:basic&amp;rev=1631456164&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-12T14:16:04+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Python basic recipes</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:basic&amp;rev=1631456164&amp;do=diff</link>
        <description>Python basic recipes

Base lib

dicts

pop


&gt;&gt;&gt; a = {'a': 1, 'b': 2}
&gt;&gt;&gt; a.pop('a')
1
&gt;&gt;&gt; a
{'b': 2}
&gt;&gt;&gt; a.pop('a')
Traceback (most recent call last):
  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;
KeyError: 'a'
&gt;&gt;&gt; a.pop('a', 0)
0


Custom parameters in logging</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:basic_django&amp;rev=1612809866&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-08T18:44:26+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Django</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:basic_django&amp;rev=1612809866&amp;do=diff</link>
        <description>Django

Commands to manage the project

To know the version:


python -m django --version


Create a Django project:


django-admin startproject mysite .


Launch project:


manage.py runserver


Create app:


python manage.py startapp polls


Create app in a different folder than root which should exist:</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:code_notes&amp;rev=1592647374&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-20T10:02:54+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Python snippets</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:code_notes&amp;rev=1592647374&amp;do=diff</link>
        <description>Python snippets

Getters &amp; setters


import flask
class MyFlask(flask.Flask):
    @property
    def static_folder(self):
        if self.config.get('STATIC_FOLDER') is not None:
            return os.path.join(self.root_path, 
                self.config.get('STATIC_FOLDER'))
    @static_folder.setter
    def static_folder(self, value):
        self.config.get('STATIC_FOLDER') = value</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:fabtools&amp;rev=1589016310&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-09T09:25:10+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fabtools</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:fabtools&amp;rev=1589016310&amp;do=diff</link>
        <description>Fabtools

	*  &lt;https://fabtools.readthedocs.org/&gt;

It is a library that allow to install and configure applications on remote hosts. For instance next script install a PostgreSQL, a postfix, an Nginx...


from fabric.api import *
from fabtools import require
import fabtools

@task
def setup():

    # Require some Debian/Ubuntu packages
    require.deb.packages([
        'imagemagick',
        'libxml2-dev',
    ])

    # Require a Python package
    with fabtools.python.virtualenv('/home/myuser/…</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:flake8&amp;rev=1589016310&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-09T09:25:10+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Flake8</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:flake8&amp;rev=1589016310&amp;do=diff</link>
        <description>Flake8

Basic usage

Documentation:

	*  &lt;http://flake8.pycqa.org/en/latest/&gt;

Install:


pip install flake8


To use it for a folder:


# for the current path
flake8
# or
python -m flake8
# or
flake8 /the/path


To use it for a file:


flake8 path/to/file.py


The output format is:</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:flask&amp;rev=1589016310&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-09T09:25:10+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Flask</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:flask&amp;rev=1589016310&amp;do=diff</link>
        <description>Flask

Extensions

	*  Flask SQLAlchemy
	*  Flask RESTful
	*  Flask MongoAlchemy
	*  Flask Mongo Engine
	*  Flask Login
	*  Flask Testing
	*  Flask used libraries

Some elements

Configuration

There are several ways to set configuration:


app = Flask(__name__)
# Using app.config
app.config['DEBUG'] = True
# Just debug (and few more) allow to configure like this:
app.debug = True
# Updating multiple
app.config.update(
    DEBUG=True,
    SECRET_KEY='...'
)
# From a file
app.config.from_object('…</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:jinja2&amp;rev=1589016310&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-09T09:25:10+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Jinja2</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:jinja2&amp;rev=1589016310&amp;do=diff</link>
        <description>Jinja2


from jinja2 import Template
template = Template('Hello {{ name }}!')
template.render(name='John Doe')



JINJA2_GLOBALS = {
    'now': datetime.datetime.now
}
app.jinja_env.globals.update(**JINJA2_GLOBALS)</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:libraries&amp;rev=1619263316&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-24T11:21:56+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Python libraries</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:libraries&amp;rev=1619263316&amp;do=diff</link>
        <description>Python libraries

Big ones

Little ones

	*  Colorama mostrar el texto con diferentes fondos y colores de una forma muy sencilla.
	*  PySnooper para hacer prints en medio de una función.

IPython

	*  object??
	*  object?
	*  %quickref o %magic
	*  %run -i hello.py, run interactively hello.py</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:medium_django&amp;rev=1589016310&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-09T09:25:10+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Django Gotchas</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:medium_django&amp;rev=1589016310&amp;do=diff</link>
        <description>Django Gotchas

Django hows

Cómo tener varios setting files

Símplemente has de definir una variable de entorno denominada DJANGO_SETTINGS_MODULE e indicar la ruta del módulo de settings deseado:


DJANGO_SETTINGS_MODULE = coopolis_backoffice.settings.alfred</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:mongoengine&amp;rev=1589016310&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-09T09:25:10+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>MongoEngine</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:mongoengine&amp;rev=1589016310&amp;do=diff</link>
        <description>MongoEngine

Updates

Masive update:


GameServer.objects(ip=ip).update(set__status=Server_status.STATUS_RUNNING)


Queries

Nested fileds

You can use the double underscore:


Tournament.objects.filter(type__num_players=2)


Or raw queries:


Tournament.objects.filter(__raw__={'type.num_players': 2})
TournamentConfig.objects.filter(__raw__={'$where': 'this.type.num_players * this.type.num_teams == 4'})</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:notes&amp;rev=1642236084&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-15T08:41:24+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Python notes</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:notes&amp;rev=1642236084&amp;do=diff</link>
        <description>Python notes

Time zones

The best practice is to store the datetime in the DB as UTC. To use time-zone-aware datetime objects internally, and to translate them to the end user’s time zone. It avoids the problem with Daylight Saving Time (DST), the zones where the clock is moved in spring and autumn.</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:pymongo&amp;rev=1589016310&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-09T09:25:10+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Pymongo</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:pymongo&amp;rev=1589016310&amp;do=diff</link>
        <description>Pymongo

Connect and DB select


from pymongo import MongoClient

client = MongoClient('54.77.11.158', 27017)
db = client.electronic


Query


db.cms_article.find()


Query one


db.cms_category.find_one({'id': art[_id]})


Update


db.cms_article.update(
	{'_id': art['_id']},
	art, 
	upsert=False, multi=False)</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:sqlalchemy&amp;rev=1606917168&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-02T13:52:48+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>SqlAlchemy</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:sqlalchemy&amp;rev=1606917168&amp;do=diff</link>
        <description>SqlAlchemy

Sessions

Add\attach to session:


session.add(object)


Dettach to session:


session.expunge(object)</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:tooling&amp;rev=1666984484&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-28T19:14:44+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Python Tooling</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:tooling&amp;rev=1666984484&amp;do=diff</link>
        <description>Python Tooling

PyEnv

For managing python environments.

First of all install libraries for properly compile any Python version:


sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl</description>
    </item>
    <item rdf:about="https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:typing&amp;rev=1665601380&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-12T19:03:00+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Python Typing</title>
        <link>https://wikiprogramming.alfredgg.dev/doku.php?id=wiki2:python:typing&amp;rev=1665601380&amp;do=diff</link>
        <description>Python Typing

Devolver el tipo de la misma clase:


from typing import Self

class Foo:
   def returns_self(self) -&gt; Self:
      return self


Alias de tipo:


from typing import TypeAlias

Factors: TypeAlias = list[int]


Definición de un tipo (en este caso self):</description>
    </item>
</rdf:RDF>
