 Directeur de l'Administrationкое de l'École Extrême du Québec Wasp Voilà Il est là Il a senti J'ai compris Je n'ai pas compris Il avait sauf Je n'ai pas compris Je n'ai rien compris Je n'ai pas compris Je n'ai rien compris Je n'ai rien compris Je n'ai rien compris Je n'ai rien compris C'est pourquoi j'ai quitté le tourisme. C'est pourquoi je vais faire une question. Je vais vous faire une question. Oui. Oui. Oui. Oui. Oui. Oui. Oui. Oui. Oui. Oui. Oui. C'est bon. Il faut voir ce que ça fait. Il faut voir ce que ça fait. Il faut voir ce que ça fait. Il faut voir ce que ça fait. Vous êtes présenté avec Mathieu ? Oui, je suis présenté avec Mathieu. Je suis présenté avec Mathieu. Il est là. Et ensuite on va voir... Il est là. Vous pouvez aller au port de NGP. Comment vous vous aboncez ? Je vais voir ce que vous avez fait. Vous pouvez aller au port de NGP. Vous avez la vie qui n'a pas été utilisé en pleine vidéo. Et le port de NGP. Oui, le port de NGP. Il est là. Il est là. Oui. Oui, mais le port de NGP. Je ne vais pas le faire. Oui, mais le port de NGP. Oui, mais le port de NGP. Mais le port de NGP. Et maintenant, il n'y a pas de problème. Donc il n'y a pas de problème. Alors il ne va pas aller au port de NGP. Il est là. Il est là. Il est là. Il est là. Il n'y a pas de problème. Il est là. Il est là. Il est là. Il est là. Pourquoi je suis là ? Je suis là pour le premier jeu. Je vais aller dans le jeu. Pourquoi je suis là ? Je suis là pour le premier jeu. Pourquoi je suis là ? Parce que je m'appelle Adam. Pour les vagues, OK ? Pour les vagues, OK. Pour les vagues, OK. Pour les vagues, OK. Pour les vagues, OK. Et l'autre ? C'est une minute. Je vous dis bonjour. C'est le 5-100, c'est le 5-100, c'est le 5-100. Non, ça ne va pas. Attends-moi. Bienvenue au Python 3 packaging workshop. Parting, parting, parting. Pardon, Python 3 parting workshop. J'espère que vous avez préparé les applications pour Python 3. Et les gars peuvent vous aider. Bonjour tout le monde. Ne pensez pas si je vais vous parler. Ok, merci. Je suis Robert Kuska, c'est Miro Hronczak. Et c'est ma petite chouette. Nous sommes un team Python en redhead. Et nous faisons des trucs Python, je pense. C'est ce que nous faisons. Bienvenue à notre workshop, qui en fait n'est pas vraiment un workshop, parce que c'est un hackathon. Notre idée c'est que il y a plusieurs groupes que j'espère des gens. Un groupe de gens sont les packages Fedora, un autre groupe sera les developers Python. Peut-être des groupes qui sont tous les deux. Et il y a aussi des gens qui sont venus ici pour parler. Et nous avons créé des jobs. Des jobs ? Des tests, vous pouvez nous aider en portant à Python 3. Donc, c'est notre main page. C'est porté pour Fedora. Il y a des listes de packages. Vous pouvez voir comment ça ressemble. Il y a beaucoup de packages. Vous pouvez choisir d'autres packages que vous voulez travailler sur. Et il y a des choses différentes que vous pouvez faire. Par exemple, il y a deux main things qui peuvent arriver. L'une est que le package a déjà un support Python 3. Mais pour une raison, ce n'est pas en Fedora. Donc, quand vous êtes un package Fedora, vous pouvez créer un bug. Vous pouvez créer un patch pour un file de spec. Et vous pouvez le mettre à l'utilisateur. Je l'ai slide. Donc, vous pouvez faire un bug, créer un patch et envoyer à l'utilisateur. Et il peut-être s'appliquer. Et il sera en Fedora. Donc, c'est la première chose que vous pouvez faire. C'est un processus de menu. Parce que nous n'avons pas d'informations sur l'upstream, le support Python 3. Donc, vous devez vérifier. Et... Parce que de cela, il y a une autre chose que vous pouvez faire. Et vous pouvez nous aider à faire notre port-in-db. De cette façon, vous pouvez... Vous pouvez ajouter la fonctionnalité de port-in-db pour l'upstream de Python 3. Il y a un GitHub où vous pouvez trouver le port-in-db. Si vous avez des questions, demandez-nous. Et nous allons vous donner plus d'informations. Et comme je l'ai parlé sur les packages Fedora, il y a des guidelines de packages Python. Vous devez suivre quand vous créez des patchs pour les packages. Et si vous êtes en doute, demandez-moi. Ou d'autres. Vous avez une question. Quand nous venons d'un package qui fait Python-boot, est-ce qu'il devrait être converti en Python 2 ou Python-boot? Ou d'utiliser Python 12? Ce serait bien. Mais il ne faut pas, selon les guidelines, convertir les packages. Mais c'est une bonne idée. Vous pouvez voir un spectre qui suivit toutes les guidelines et la situation. Je vous remercie. C'est vraiment bien. Je vous remercie. C'est beaucoup plus difficile de partager les spectres avec les packages. Parce que... Qu'est-ce que c'est? Parce que les macros pour les provider n'ont pas de réveil. Donc, vous devez avoir un peu d'absence. Ou vous avez des branches. Si vous avez des branches dans les packages avec Apple 6 et 7, votre spectre est un peu massif. Et vous avez des packages où il y a 5 choses en spectre. Si c'est en Apple 7, je suis content. En quelque temps, j'ai essayé de régler les issues parce qu'il n'était pas là. Mais je ne veux pas qu'il y ait des choses. C'est en Apple 7. Merci, je suis content. Et si vous êtes un developer Python, vous vouliez apporter des choses à Python 3. Vous m'avez dit quelque chose, je pense. Ah, cool. Il y a plusieurs outils où vous pouvez apporter des choses à Python 3. C'est l'une des meilleures outils que j'ai créée. C'est apporter à Python 3. C'est disponible online, en PDF, et vous pouvez l'organiser comme un livre physique pour 5$. C'est très bon. C'est un peu ancien, mais c'est le meilleur endroit. Et il y a quelques outils pour vous aider à apporter à Python 3. Nous espérons l'utiliser aujourd'hui. La première est 2-3, c'est pour transformer Python 2 code à Python 3. Il y a 6 outils qui permettent de donner plusieurs outils pour que votre code fonctionne entre Python 2 et Python 3 en même temps. Il y a Modernize, c'est un peu comme 2-3. C'est un peu plus... En fait, si je peux... 2-3 prend Python 2 code et fait du magique pour faire Python 3 code. Modernize fait du magique pour faire le 2-3. Et d'habitude, c'est ce que l'AppStream project a fait. C'est très bon. C'est plus facile pour 4-3 que pour 4-3. La réalité est importante. La réalité est que Python et AppStreams ont besoin d'envoi. Les plateformes d'envoi n'ont pas l'option. Je vois toutes les raisons. C'est suffisant pour nous. Et ensuite, on a la pi-3-c qui est un micro-macros pour la compétibilité de single source. On a une extension de 1-c qui est compatible avec Python 2 et Python 3. C'est ce qu'il y a. J'aimerais vous poser quelques questions. Comment beaucoup de gens sont venus ici ? C'est mon nom. C'est Wicky T.C.N.S. C'est le 12 août de la fin de la journée. Qu'est-ce qu'il y a ? Koji. Bonne chance. C'est la première fois qu'on parle. Commencez maintenant. Qu'est-ce qu'il y a d'autres personnes ? Ok. Qu'est-ce qu'il y a d'autres gens qui veulent nous donner un petit projet qu'ils peuvent travailler sur ? Est-ce qu'il y a d'autres gens qui veulent travailler sur un projet Python 4, Python 2 et Python 3 ? Non, ok. Qu'est-ce qu'il y a ? Qu'est-ce qu'il y a d'autres gens, pour que les gens puissent voir les rempliés. Qu'est-ce qu'on va faire ? D'abord, on va commencer à ne pas rester chez Koji ! On va gérer le plan. 1,2,3, c'est dans ce processus. Je n'ai pas joué par 6 En fait, je n'ai pas joué avec Six, mais il n'y a pas de utilités, et il n'y a pas d'utilités pour la bête ou de la force, parce que c'est mon plus grand pain en supportant. Six n'est pas un outil, c'est un élément. Il y a quelque chose dans Six, je crois que c'est Six.StringTypes, et vous pouvez juste demander si c'est Six.StringTypes, et puis il y a un code qui est clean. Mais l'actual décoding et l'encoding, ça a été fait automatiquement dans Legacy Python. Et maintenant, dans Python 3, vous devez le faire programmément correctement, et c'est à vous de le faire, et Six ne peut pas vous aider. Et si vous faites ce code et l'encodement, vous ne vous arrêtez pas avec Python 2, parce que dans Python 2 vous pouvez mettre string.encodement.encodement.encodement.encodement. Et ça resulte en string. Je crois que j'ai écrit beaucoup de ces. Donc, est-ce qu'il y a des outils ? Vous ne pouvez pas le dire, mais est-ce qu'il y a d'autres outils pour aider à l'endroit de la bête ou est-ce que c'est plus de plus ? Je ne pense pas. Test-suites ? Oui. Le point ici est que dans Python 3, l'idée n'est pas possible pour vous automatiquement. Le plus grand problème ici n'est pas le Python itself. C'est que l'application doit avoir une notion de séparation entre les problématiques data, lesquelles elle n'est pas. Ce que j'ai dit, c'est qu'il y a beaucoup de code qui s'occupe de la readability. Et je suis anti-code qui s'occupe de la readability. Vous pouvez, si vous utilisez... C'est quelque chose que Python 3 n'est pas utile. Ce n'est probablement pas utile si vous voulez maintenir la readability de 2. Mais vous pouvez utiliser des annotations typiques dans vos fonctions. Et puis faire un analyzer statique. Si quelque chose qui est supposé de prendre des bytes n'est pas envoyé en string, etc. Je crois que c'est cool, mais ça n'a pas l'air utile. Je ne suis pas confiant sur Free, d'ailleurs. Je suis en fait confiant sur la maintenance de l'application. Bienvenue à la team. Peut-être des slides. Vous avez plus de slides? Oui, c'était tout. Il y avait tout. Maintenant, c'est le processus où tout le monde choisira sa package et portera-t-elle. On peut... Comment beaucoup d'entre vous sont intéressés plus sur le packaging RPM? De ceci, dans Fedora? Oui, c'est... C'est bien. C'est bien. C'est bien. C'est bien. C'est un workshop. C'est bien. C'est bien. Qu'est-ce qu'on peut faire avec la package? Et puis... C'est... C'est la plupart d'entre vous en portant de Python code, non? Oui. Donc, si vous regardez le portant DB, il y a des packages rèdes. Ce sont bloquées par une dépendance. Et vous ne devriez probablement pas porter un package qui a une dépendance portée. Donc, ce sont des packages de l'air de gris. Ce sont des packages qui n'ont pas... Ils n'ont pas de support Python 3 en Fedora. Mais toutes les packages, si il y a d'autres, sont déjà portées. Donc, si vous n'avez pas de package en mind, vous pouvez juste browse ce liste et choisir. C'est en fait beaucoup plus facile de porter... Je ne sais pas. Ne choisissez pas d'application graphique pour faire quelque chose. Et quelque chose comme ça. Vous devez probablement choisir quelque chose que vous savez. Il y a un graph. Il y a des pages pour charger, je pense. Oui. Portant DB. Oui. Est-ce qu'il y a des utilisateurs sur les packages? Parce que je pense que j'ai vu un de mes packages. Je voudrais savoir... Ce n'est pas là, mais si vous voulez, vous pouvez aussi travailler sur ça. Et la fonctionnalité de portant DB. Qu'est-ce que vous voulez voir? C'est orange. Si c'est orange, ça veut dire qu'il y a un progrès. C'est comme si quelqu'un a créé un bug pour ça, quelqu'un a travaillé sur les patches. Parce qu'on avait beaucoup de portings sur Python 3. Et il y avait des gens qui ont commencé à porter des choses, donc ils se sont marqués en progrès. Ok, maintenant, vous avez quitté là-bas. Est-ce qu'il y a plus d'informations sur ce que vous avez fait, ou que vous avez besoin de ce que vous avez fait? Quand vous cliquez sur le package... Je voudrais savoir comment vous travaillez avec ce portant DB. Ok. Oui, donc j'ai choisi le free path. Quand vous cliquez... La plupart de l'information dans ce code est élevé par les repos. Et c'est très difficile d'avoir des raisons. Il y a aussi des files textes, des files jambes, que vous pouvez mettre dans les descriptions, en disant quelque chose comme... C'est comme ça, et cette personne travaille sur ça. Et vous pouvez ajouter des URLs pour les repositions où le portant est arrivé, pour les bugs et les trucs comme ça. Mais ça doit être fait régulièrement, donc parfois on ne fait rien. Vous pouvez voir les dépendances de ces choses. Et... C'est-à-dire qu'il dit que le bug est fermé, mais le truc n'est pas encore fait. C'est-à-dire qu'il y a quelque chose qui doit dépendre seulement sur deux, mais il dépend sur deux et trois. Comme vous pouvez le voir, les interface graphique de polysicorial dépendent sur trois et deux. C'est bizarre. Pourquoi vous avez besoin de ça? Oui, il y a une dépendance d'un signal tube. Et bien, tout ce que l'on travaille sur Python 3, c'est déjà graphique, mais ce n'est pas important. Oui, donc c'est probablement pourquoi Max est en progrès, parce qu'il vérifie que si chaque package ou sub-package dépend seulement sur trois, c'est bien. Allez-y! Ou si Python 2 et Python 3 sub-packages dépendent sur deux et trois, dépendent sur trois. Si il y a une raison pour un package pour dépendre sur les deux, etc., vous pouvez faire un pull-request sur GitHub, sur portingDB, sur les files de YAML, et le marché est terminé, et il y a des sentences qui décrivent pourquoi. Ce serait bien. Oui. Une chose sur portingDB, c'est qu'il n'y a pas de temps réel. Il s'est créé une fois. Et si vous êtes sur la main-page, dans la corner de la droite, il y a un date et un temps stamp. C'est bien? C'est bien. Vous pouvez voir si les gens travaillent. Non, mais... Je suis 35% d'un cogie. Il y a peut-être une feature, quand vous pouvez voir combien de lines de Python ou de code C sont utilisées dans un package. Donc, quand vous cliquez sur un package, essayez d'utiliser un package. Oui. Et dans la gauche, je pense, sous les dépendances, vous pouvez voir qu'il y a beaucoup de lines de code, donc vous pouvez choisir un autre package. On peut aussi vous montrer qu'il y a un graph de l'histoire. Ces packages sont déjà sur Python 3. Il y a les 10 lines d'orange qui sont en progrès. Les packages gris sont les packages qui sont prêts à être portées, comme toutes les dépendances sont déjà solides. Les packages gris sont les packages qui sont encore bloquées. Comme vous pouvez le voir, nous sommes lentement en arrivant. Et nous sommes aussi en arrivant dans les packages totales. Mais pas beaucoup. Il y a un petit bleu qui signifie un package. Oui, c'est probablement comme il y a un Python 3.5 rébuildé dans Fedora. Et des packages n'ont pas pu construire parce qu'ils ont des problèmes avec la compatibilité. Il y a un code Python 3.5. C'est ce que les packages sont, c'est ça. Ils sont en compétences à la compétition du code Python 3.5. Mais les codes de la compétition sont les packages qui peuvent être modernisés afin d'avoir quelque chose qui fonctionne. Ce serait le premier petit step. Exactement. C'est la première chose que vous voulez apporter, c'est un test. Si vous n'avez rien, c'est une situation de bête. C'est la première chose que vous voulez apporter. C'est la première chose que vous voulez apporter. C'est la première chose que vous voulez apporter, c'est un test. C'est la première chose que vous voulez apporter, c'est un test. C'est la première chose que vous voulez apporter, c'est une situation de bête. C'est la première chose que vous voulez apporter, c'est une situation de bête. C'est la première chose que vous voulez apporter, c'est un test. C'est la première chose que vous voulez apporter, c'est un test. C'est la première chose que vous voulez apporter, c'est un test. C'est la première chose que vous voulez apporter, c'est un test. C'est la première chose que vous voulez apporter, c'est un test. C'est la première chose que vous voulez apporter, c'est un test. Je ne sais vraiment pas si c'était une question ou juste une description de la situation. C'est raisonnable. C'est raisonnable. Je n'ai pas vu le code et tout, c'est raisonnable. Mais je ne peux pas dire que c'est pour 100% sûr. Ok. C'est plus grave. Donc le processus, si ce n'est pas si compliqué, c'est très compliqué. C'est très compliqué, mais si vous avez un projet pure Python, c'est de la modernisation et les tests. Vous pouvez voir si vous n'avez pas fait le test Python 2 et puis le test Python 3. Le test Python 3 va probablement produire des défis avec des exceptions, etc. Et le nez va commencer à fixer ces cas. C'est une bonne idée de voir si, quand vous avez fixé un truc particulier, de remplacer un test avec ça, de voir si ce n'est pas un pattern répétitive dans le code, si vous ne devriez pas trouver et remplacer ça partout, etc. Et de nouveaux tests. De nouveaux tests, jusqu'à quand les tests sont gris, et quand les tests sont gris sur les 2 et les 3, vous essayez d'utiliser les choses. Si vous ne savez pas ce que le projet est supposed à faire, mais si c'est votre projet, vous le connaissez probablement. Alors, oui, vous êtes rassurant, mais j'étais en train de porter des choses qui étaient supposedes à faire dans un plan de cloud, si on a fait ça et ça, je ne l'ai pas compris. Toutes les tests étaient gris, mais quand vous l'avez fait, c'est fait gris. Mais tout le test était gris. Donc, vous l'avez fait et vous essayez de voir si tout le processus fonctionne. Donc, c'est-à-dire que vous faites des tests manuels. Et si ça fonctionne, vous êtes probablement ready à le soumettre sur upstream, ou si vous êtes upstream, allez-y et mélangez-le à Master, ou à Devil Branch, ou tout ce qu'on utilise. Et puis, d'autres vont probablement utiliser ça aussi. Et ils vont vous rappeler si l'autre chose est détruit, ce qui se passe aussi, parfois. Quand c'est prêt, et qu'il est prêt sur le package Python, il y a la deuxième partie pour Fedora, c'est d'introduire le package Python-free, ou tout ça, et d'utiliser ça en Fedora. Et puis, il y a un écran, et tout le monde est heureux. Donc, vous voulez voir quelque chose de réel? C'est quelque chose de réel. Je me souviens de voir comment c'est fait. Vous avez tout fait? Bien, j'ai utilisé la mononise sur toutes les codes clientes. Vous pouvez venir ici, nous pouvons placer sur votre monitor, et nous pouvons travailler avec tout le monde ensemble. Oui, c'est ça. J'ai pris le point où il n'y a plus de Python 2. Ah, c'est un point. Je sais que c'est un test très simple, mais, vous savez, je peux, je peux prendre le client et dire bonjour à mon local code server, et il n'y a pas de bonheur pour le Python 3, ça va être beaucoup plus grand. C'est parce que les choses qu'on fait avec Python SSL, dans les SSL, c'est... Oui. Donc, vous vouliez venir ici pour que nous pouvons tout faire ensemble, ou vous préférez travailler ensemble? Je pense que... C'est drôle, c'est vrai. Nous avons un... C'est un câble, vous pouvez le partager. Batch index? Non, c'est pas un câble. C'est pas un câble, peut-être... Oui, c'est ça. Vous allez juste... Vous allez juste rester ici et... Oui, je veux juste vous montrer. Je veux dire... Je veux dire... Oui, je veux dire... Si vous êtes collecteur de badges... Vous pouvez aussi recevoir Batch. Nous avons un special Batch pour porter Python 3. C'est l'une des meilleures baches que j'ai vu. C'était sa idée. Comment est-ce que vous avez apporté ça? J'ai apporté beaucoup. Je n'ai pas besoin de changer les houses. C'est tout ce que j'ai vu. Allez, allez. Allez, allez. Donc... Je pense que, probablement, cela peut être très compliqué et se convertir dans les portes pour les requests Python. Non, on ne peut pas faire ça. Si vous avez un code C, la bonne chose à faire, c'est d'apporter un port de Python. D'apporter un port de Python. Alors, c'est le point. Un enjeu de tests a 60 différents systèmes d'opération d'optérée de plateformes. Pas toutes, mais on a Python 3. Tout le monde, un enjeu d'optérée d'optérée du type 2. Un enjeu d'optérée du type 2 et 4? On s'est confiné en 2.6. Maintenant. C'est un type de basel. Et il faut encore travailler. Parce que le système de build un système possamé est réveillé en type. C'est cool. Oui. Oui. C'est un part de la radio qui peut travailler avec les 3. Ou juste aller à l'interdit, aller à la place ou quelque chose. Les workings sont magnifiques. Qu'est-ce que la résolution est celle-ci? La résolution est celle-ci. La résolution est celle-ci. La résolution est celle-ci. C'est réveillé en papier ici. OK. Oui. Je vais juste faire ça. C'est cool. Je vais voir si je travaille avec cette résolution sans la mort. C'est super. OK. C'est bon. Alors, ce que j'ai fait. C'est le premier commit. Je m'a modernisé quelques choses que j'avais à fixer. C'est vraiment un petit subset de CoG. C'est juste la commande CLI. Et les quelques libraries que la commande CLI actually utilise. C'est ce que j'ai fait. Vous pouvez voir ici le 6e library. Qu'est-ce que vous avez fait? Donc c'est tout de suite ce que j'ai modernisé. Oui, je l'ai fixé quelques choses. L'un des choses que j'ai fait c'est que j'ai installé les imports de future sur le hashbang. C'est probablement quelque chose qu'il devrait être facile de fixer. Qu'est-ce que vous avez besoin d'import print function? 26. Donc c'est... Il n'y a que 27. Il y a beaucoup de print dans la CLI. Donc ça ressemble à un peu de ceci. Et sur le print, est-ce qu'il y a une liste dans 4 cycles? Vous pouvez aller en haut. Il y a une liste explicite parce que je pense que ça ne peut pas être requiert en ce cas. Oui, ça ne peut pas. C'est probablement une meilleure saison. Vous pouvez aller à githp.go3.blog. Et c'est juste le print. C'est juste... Ok. Ça fait que le point de graine que vous avez à faire est plus petit. Ok. Ok. Donc beaucoup de print. Donc, on va voir. Donc, c'est ce qui se passe si je... Donc, si je rentre par Python 2, ça marche. Si je rentre par Python 3, le warning est prévenu. Je ne pense pas que ce module est porté. Et oui, c'est parce que ce code est en train de faire des mauvaises choses. Oui, c'est en train d'utiliser le module privé. Oui. Vous ne pouvez pas utiliser le module privé. Vous pouvez utiliser le module privé. Oui. C'est... C'est... Vous avez pas à dire. Oui. Les canviés ne peuvent jamais aller à Python 3. Et ce n'est pas bon. Je pense que nous le connaissons. Alors, c'est Python Carb-Rose. Oui. Oui. Peut-être Python GSSA-PI. GSSA-PI. Et après, vous allez faire un proper GSSA-PI. Je pense que le browser est possible. Et après, vous allez... Je ne peux pas faire du portage ici. Je vais juste dire, je suis un gars de Kerberos. C'est mon day job. Ok, donc je vais me donner votre carte. Tu sais Mike Benet ? C'est un gars qui a écrit Python, KerbD, je pense. C est la plupart de mon day job, je travaille sur KZ. Ok, donc... Mike, je vais essayer ça. Il n'y a pas d'offres, donc ça va... On devrait savoir comment replier un objectif. Ok, je vais... C'est un objectif, donc ce n'est pas long. Je vais voir si je peux le faire. Il n'y a pas d'offres, donc je ne sais pas si je peux le faire. Je vais essayer de commenter ces choses. Dépêchez-vous, ça donne un point de vue. Ok, je vais me faire une autre chose, je vais faire une autre chose, je vais faire une autre chose. Je ne sais pas si je peux le faire. Ok, je vais me faire un autre chose, je vais faire un autre chose. C'est un programme. C'est un programme. Et c'est simultanément jugé par 30 ans. Ce qu'il y a, c'est que l'importance est un peu inconditionnée. C'est juste un peu important. Oh, c'est l'importance? Oui. C'est un peu important? Ok, on va voir. Je pense que c'est le second module. Oui. C'est en fait l'actuale module SSL. C'est parce que nous avons, en Python 2, j'ai dû faire ça, pour qu'on importe le module SSL, parce qu'on a un module SSL. Oui, il y a un module SSL en Python. Donc c'est important de le faire. Oh, c'est fixable, peut-être? Oui. Python 2, n'est-ce pas ça? With Python 2... You can use an turnout cable. We will have to wait 10 minutes. Python 3. Oh, of course. Python 3, version 5, no package, I don't think there's an actual or Python 3. Right, did they change? Yes, they merged the API in the sie variable. Est-ce qu'il n'y a pas un URL 3 maintenant ? Oui, mais c'est complètement différent. Je pense qu'il y a un 6, un module, un URL et un 2, un module. Ok, je n'ai pas fixé ça. Il y a quelqu'un qui ne s'arrête pas ? Je ne sais pas. Il y a quelqu'un qui a un page où ils listent tout leur module. C'est 6.moves. Oui, c'est un de ces. Je suis sûr qu'il y a d'autres. 6. C'est un document. Il y a un URL. C'est un de ces. 6. C'est un de ces. Y a un table, c'est un de ces. Il y a un de ces. Oui, il y a un de ces. Il y a un de ces. Il y a un URL. Je pense qu'il y a un table sur le base. Il y a un table sur le base. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...