 C'est bon ? Est-ce que tout le monde va vous voir ? Salut tout le monde ! Bienvenue à Borel Piton 100. Je sais que je pars fort parce que je suis un peu excité. Là on est quand même le 100ème. Je ne sais pas trop. Une chance que mon ami Yannick va pouvoir prendre le contrôle parce que moi je suis déjà trop excité. Mais bon, je vous souhaite bienvenue et amusez-vous bien. C'est ça. Salut tout le monde ! Bienvenue à Borel Piton 100. Je suis vraiment excité et je ne sais pas comment dire. Je veux juste bienvenue à mon ami Yannick. Bonne journée tout le monde ! Bonsoir tout le monde ! Bonsoir tout le monde sur YouTube. Et bienvenue à Borel Piton 100. Unipolar Orchestra. Et notre programme pour aujourd'hui est 3 présentations techniques. Et si vous inquiétez ce que l'Unipolar Orchestra veut dire, je ne suis pas exactement sûr. Mais nous avons un script Python qui a décidé ça pour nous. Nous avons un couple de bonnes annonces. L'un est que Python 3.12 a été publié la semaine dernière et ils espèrent que Python 3.12 sera publié la semaine prochaine. Ce qui n'est pas si grand, c'est qu'il n'y a pas de documentation de Python 3.12 qui est en français. Nous considérons que Python 3.12 est traduit. Si vous êtes intéressés, comme en Simi ou en Duc, ou même en Mathieu, on peut organiser quelque chose en novembre. Il y a Python 3.12 à RC2 qui est sorti de lundi prochain. On s'attend à ce que Python RC12 final sort. Python RC2 est sorti de lundi passé. On s'attend à ce que le final sort de lundi prochain. Il n'y a pas beaucoup de documentation en français pour Python 3.12. On veut traduire ça. Et ça va nous prendre des traduitaires. J'ai l'impression que dans cette salle, on a du monde pas mal bilingue. La doc, c'est facile. C'est en RST. C'est aussi cool comme Markdown. Mais on compile ça, on se met en gang, on s'en va sur Slack. Et puis on s'échange nos traductions, on réveille ça pour voir si on a des bons termes techniques. Et on pourrait s'organiser pour quelque chose autour de novembre. Ça, c'est pour Python 3.12. Et puis, on va avoir Montréal Python 101. La prochaine édition de Montréal Python, ça va être le 30 octobre. Ça va se passer... Ça va se passer à quelque part à Montréal. On va continuer en personne et en hybride. Merci encore les gens sur YouTube. Je sais pas si c'est comment le son, on fait ça un petit peu. On essaie des choses. On expérimente. Et puis après ça, après Montréal Python 101, moi, j'ai fini. Je prends ma retraite. Et ça, ça veut dire que si vous aimez les événements Montréal Python, ben là, c'est pas du tout seul parce que d'après moi, il va trouver ça un petit peu, beaucoup de chance de travail. Et ça se pourrait qu'il décide de prendre sa retraite aussi. Et donc, si ça vous intéresse de continuer de faire des événements comme ça, parlez à Duke et puis essayez de vous impliquer. Et puis, si ça vous intéresse pas, ben c'est pas grave, on va juste prendre un break de Montréal Python, puis on va regarder YouTube à place pendant la prochaine édition. Montréal Python 101 va être en octobre 30. On ne sait pas encore où, mais ça va être en Montréal. Et ça va être hybride. Merci encore les gens sur YouTube. Je ne sais pas comment le son est. Peut-être que je dois parler un peu plus près du microphone. On expérimente. Et après ça, je vais être en retardant pour Montréal Python, une deuxième fois. J'ai fait ça avant. Donc, si vous aimez ces types d'événements, on va ouvrir le meeting. Et vous pouvez vous dire que vous vouliez être invité. On n'a pas besoin de beaucoup, on va trouver des présenter, des websites, quand on a un meeting, des trucs comme ça. Mais si personne ne le fait, on ne va pas avoir d'événements. Qu'est-ce que ça devrait être mentionné? Oh oui! Après cette meeting, si vous faites des bords, je vois que vous n'avez pas beaucoup de réformations dans cet état. C'est la fin de la présentation. Mais ensuite, on va aller à Trois Brassards. C'est juste dans la rue pour les réformations. Et puis, grâce à nos responsables généraux, Microsoft pour nous hoster, et FGNI pour hoster l'heure virtuelle, que j'espère qu'on vous remercie de lancer avant qu'on fasse notre heure heureuse. C'est ce qui a été dit. C'est temps de parler d'avoir un contenu technique. La première présentation ne pourrait pas être cette technique. Je ne suis pas sûr. Denis, qui est le directeur de la FGNI, et le fondateur de FileyD's Santiago, va nous parler de ce que la FGNI fait. Je répète en français. Alors, on passe dans les présentations techniques. Et on va voir Denis qui vient juste d'être élu directrice de la FGNI. Et qui va nous parler de la FGNI. Merci. Merci beaucoup. Monos, Denis. Ok. Je vais vous donner ce talk en anglais, mon premier talk en anglais. J'ai déjà fait ce talk en français, en espagnol, la plupart du temps. Je suis de la République Dominicaine et je vivais ici au Montréal depuis 8 ans. Et je suis so excited de partager des informations sur la FGNI. Et nous allons commencer. Et oui. J'ai déjà fait ma présentation avec le manager de la communauté et le organisateur de la FGNI qui a récentement été élu comme directeur et a organisé un nombre de communautés autour de la FGNI. Et qu'est-ce que la FGNI est? Je vais en parler le plus de temps, mais ça va prendre 10 ou 15 minutes. Juste, ne pas plus. Et la FGNI est une organisation dédiée pour avancer l'open source de la technologie sur le langage de la FGNI. Et la mission? Qu'est-ce que c'est? C'est pour nous que la FGNI se banque et ne protège pas les langages de la FGNI et facilite la crise de la communauté international. Qu'est-ce que c'est? C'est une organisation dédiée une organisation d'organisation en ouvertement. Nous sommes en train de faire le gouvernement et de la communauté. La toute communauté. Si vous... Excuse-moi. La foundation Python existe pour soutenir l'écosystème Python et la communauté pour tous les utilisateurs et les utilisateurs Python. Si vous contribuez à la communauté Python, en toute façon, si vous êtes un organisateur, si vous êtes un éducateur, si vous êtes un sponsor, si vous êtes... Les gens qui créent une pièce en même temps, vous supportez nous et vous êtes partage de la foundation Python. Sur la mission sur la foundation Python, nous accomplissons avec des activités d'écosystème. Le PSF a donné l'instructeur une stabilité que la langue Python est un contributaire et que l'utilisateur n'a pas besoin d'un trait. Pour exemple, nous distribuons la pièce qui est en charge et qui est disponible pour nous. Nous établissons le PSF, le licence, le taux de l'intellectualité, et le taux d'écosystème Python. Nous avons coordiné et apporté des ressources pour l'improvement de la base Python et de nouvelles réaltions de Python. Une autre mission sur les activités d'écosystème Python est que le PSF facilite les avances et... Au moins, vous êtes compréhensibles si vous ne l'entendez pas un petit peu. Mais le PSF facilite les avances dans la langue Python et la technologie Python et les ressources d'éducation. Pour exemple, nous établissons le PSF. Beaucoup de vous connaissent ce que le PSF est. Je peux parler un petit peu plus tard. Et le PSF est proposé. Et notre project manager de packaging travaille sur comment, pour le meilleur, servir le PSF à l'utilisateur. Il y a récemment une nouvelle personne dans le PSF qui travaille sur... C'est un développeur en résidence. Il travaille sur... Comme un contributaire de volunteer, l'impact du processus d'écosystème Python, les requêtes de poste et l'improvement de la structure d'écosystème Python. Nous encourageons la recherche de Python dans les intérêts publics. Il y a encore trois choses que nous avons réalisées dans nos activités. Comme le PSF empêche les gens qui font de la communauté Python et qui promote la connexion, la diversité et l'engrave dans la communauté Python. Par exemple, la foundation Python s'appelle PythonUS. C'est une grande conférence annuel, juste pour déterminer et pour apprendre et d'aller ensemble sur Python. Cette conférence, la prochaine année, sera bien puissante dans le PSF. Une autre chose, c'est que nous proposons de grands groupes à travers le globe. Par exemple, si vous faites des événements sur Python, vous devez avoir une grande conférence. Vous avez une grande finance. Nous vous donnons une grande conférence dans une formule que vous pouvez trouver dans la website de la foundation Python. Vous pouvez remplir une formule et vous pouvez demander pour des fonds. Le PSF vous donnera des fonds pour vos événements. Par exemple, maintenant, vous, Yannick, pour ces événements, vous devez pouvoir demander au PSF et que le PSF peut ajouter une réprégetation. C'est-à-dire, une réprégetation. Et vous pouvez vous donner des fonds pour vos événements. Vous pouvez vous donner des fonds pour vos événements. Et des choses comme ça. Le t-shirt, oui, vous pouvez l'aider. Le PSF vous aide aux gens qui veulent aller à PythonUS. Le PSF, chaque année, est dans différentes villes de l'Université. C'était une fois, ici, en Montréal, en 2015 et en 2014 et en 2015. Parce qu'il y a quelque chose dans le PSF. Le PSF s'est soutenu dans la même ville pour deux ans. Par exemple, il sera soutenu dans le PSF, la prochaine année, et il sera soutenu dans la prochaine année. En deux ans, c'était en Utah. Et puis, en Montréal, c'était soutenu en 2014 et 2015. Parce que, oui, nous devons vous donner le PSF. Et puis, si vous voulez aller à cette conférence, c'est une grande conférence avec un peu de sponsors, beaucoup de networking, vous pouvez poser le PSF pour un grand. Le PSF peut vous aider jusqu'à 70% de votre équipe. Vous allez s'exprimer durant le vol, en voyage, rester à l'hôtel. Et, le PSF a toutes ces opportunités pour les gens qui veulent aller à la PICON. Et puis, nous avons physiquement sponsorisé 13 groupes de PSFs. Par exemple, nous avons spécifiquement 13 communautés qui sont récentes chaque année soutenues par le PSF. Par exemple, le PICASCADE. Le PICASCADE est une conférence entre Vancouver, Seattle et Portland. Portland. Oui. La prochaine année, c'est en Seattle. Et c'est une grande conférence avec ces trois villes. Et le PSF supporte. Et une grande communauté que le PSF aide les femmes et les femmes autour de le PSF. Il y a une grande communauté qui est née par les femmes. Chaque année, le PSF aide les 200 femmes juste pour les PSFs. La PSF, ils payent tout pour les femmes. Et le PSF, derrière le PSF, le PSF, on a un staff de 9 personnes. Ces 9 personnes sont les personnes qui ont un salarié. Il y a seulement 9 personnes qui ont un salarié de la PICASCADE. Et puis, toute la communauté est un volunteer de la PICASCADE. On a un contrôler, un directeur, un dirigeant, comme vous pouvez le voir là-bas. Et le nom est Guido. Guido Van Rosen, la plupart de vous n'ont pas de Guido. C'est le créateur de la langue Python. Et il est sur le board. Comme directeur du board, dans le board directeur, nous sommes 12 boards directeurs. Nous sommes électorés par la communauté. Chaque année, il y a des boards qui sont dans les fondations de la PICASCADE. Et les gens qui peuvent boucher dans cette élection sont la communauté et le PSF, le membres de la PICASCADE. Je vais parler de la PICASCADE. Le membres... Quand je parle, quand je parle de la PICASCADE, parce que en becoming un PSF membres, vous êtes en train de travailler avec la Fondation Python comme manager de la communauté ou comme créateur et que vous serez attachés au code de conduct ou le PSF. Et nous avons plusieurs membres de la PICASCADE, par exemple, un membre basé. Un membre basé est un membre basé. Et ça veut dire que vous déclarez que vous êtes partage de la PICASCADE et que vous serez attaché au code de conduct. Le membre de la PICASCADE, le membre de la PICASCADE se dédicke à moins 5 heures par mois de soutenir la communauté Python d'organiser des événements et des choses comme ça. Vous pouvez... Vous allez au site de la PICASCADE et vous pouvez faire une nomination de vous-même comme membre de la PICASCADE. Si vous le savez, vous pouvez le faire comme nomination de vous-même, mais vous devez être sûrs. Vous avez... Vous faites un membre de la PICASCADE de 5 heures par mois. Et le membre de la PICASCADE est un membre basé par des donateurs. Par exemple, c'est des gens qui peuvent aider la foundation Python avec un membre de la PICASCADE de 99 dollars par année. Et... Qu'est-ce qu'il y a ? Est-ce que l'apprentissage de la PICASCADE de la PICASCADE se dédicke à 5 heures par mois ? Oui. Oui, il dédicke. On a déjà... Je vais changer. On a ce genre de membre. Dans le membre de la PICASCADE, il y a des gens qui dédicke à minimum 5 heures par mois. Et ils peuvent travailler sur un projet avec l'advance de la mission de PSF par créer et maintenir l'opposé. Il y a beaucoup de gens qui translèrent la PICASCADE en Spanish, même en Portugais. Et ils sont tous des membres de la PSF. Qu'est-ce que la particularité de ces membres ? Par exemple, si vous êtes un membre basique, vous n'avez pas le droit de voter. Les membres de la managée, les membres de la soutenir, et les membres de la contribu... Les membres de la fêlée. Les membres de la fêlée sont des gens qui font une communauté d'un grand travail, un effort extraordinaire et d'aider beaucoup de membres de la communauté Python. Vous pouvez dire, OK, Yannick, vous faites un effort extraordinaire pour l'écosystème Python, Python... OK, je peux passer par la PSF website. OK, je nomine Yannick comme membre de la Félo pour les membres de la Fondation Python. Et chaque 3 mois, nous faisons une check-in. Et comme ça, vous pouvez devenir un membre de PSF. OK. Et le droit de voter c'est parce que vous pouvez donner votre voix pour le futur de la Fondation Python. Si vous pouvez voter, vous pouvez décider qui peut être le directeur de la banque. Par exemple, comme directeur de la banque, ce que nous avons besoin de dans le directeur de la banque. Pourquoi est-ce que je l'ai élevé? Parce que je l'ai élevé par la communauté. Beaucoup de gens étaient dans l'élection et ce que nous avons besoin de, c'est que les gens qui sont intéressés dans l'advocation de la PSF et qui ont l'énergie et perspective sur une communauté internationale ont augmenté leur représentation. Je suis en train de travailler sur le... Et... Et là... Quoi? En anglais. Et dans ce groupe, je vais vous montrer. OK. Diversité et des groupes d'inclusion. Par exemple, si vous voulez avoir votre... Comme vous l'avez dit, transmettre la documentation Python dans votre langue, vous êtes bienvenus à rejoindre la diversité et l'inclusion de l'élection. Parce qu'ils font beaucoup de hard work en essayant de mettre de la diversité dans notre communauté. Et vous pouvez rejoindre un de ces groupes de travail juste pour être un membre contributaire ou un membre de management. Par exemple, si vous voulez rejoindre la PSF, vous pouvez commencer à rejoindre un de ces groupes. Diversité et l'inclusion de grands groupes. Il y a un nombre de communautés demandant pour les grands pour la PSF. C'est un hard work. Et nous avons besoin de beaucoup de personnes juste pour vérifier et... Je vais dire, pour les... J'ai oublié le travail. Pour vérifier tous ces requises et donner le grand à les communautés. Et puis, en fait, en fait, en fait, il y a deux groupes de travail qui sont mis en place. Et je vais vous donner ce code QR si vous voulez vérifier plus sur la PSF et ce code QR qui vous donne au site, c'est un site user-friendly, n'importe quoi. Si vous voulez... Si vous regardez le code PSF, vous pouvez le trouver au site. Au site QR code. Vous pouvez nous suivre et l'entraîner. C'est tout de suite. Vous êtes encore sur Twitter. Maintenant, 8, vous savez. Et je veux prendre cette chance juste pour vous inviter à la PSF 2024. Ce sera dans la prochaine année. S'il vous plaît, si vous vous sentez que vous n'avez pas... pas trop d'argent pour aller à la PSF, s'il vous plaît, vous allez à la PSF. Et la prochaine année, on va ouvrir une formule que vous pouvez soumettre en vous demandant pour grand. S'il vous plaît, vous pouvez suivre les médias sociaux pour savoir quand on ouvre cette formule. Donc, vous avez eu des coups ou des coups à l'aide? Non, pas encore. Non, pas encore. Nous devons lancer le papier corpore par le 22 octobre. C'est quelque chose comme ça. Bon, vous pouvez nous suivre. Vous pouvez aussi suivre le FalconUS 2024. Oui. J'espère que vous allez voir dans le FalconUS cette année. Et le FalconUS 2021. C'est le premier FalconUS 2021. Il sera aidé. C'est l'année de décembre. Dès 1 à 3 décembre. Le papier corpore est déjà fermé. Mais vous pouvez nous participer. En attendant, on va ouvrir la formule de registration la semaine prochaine. Et puis, qu'est-ce qu'il y a? Je pense que... Non? Merci. Merci. On a eu des questions. Et vous êtes en train de poser des questions online. Oui, oui. Je vais vous dire ceci. Les gens en train de nous suivre, vous pouvez poser vos questions sur YouTube ou en commentaire. Ou si vous êtes dans la chanson ou sur la chanson de Matrix, vous pouvez poser vos questions. Oui. Qu'est-ce que nous n'avons pas de questions? C'est... Comme les stocks. Nous pouvons dire CEO. On mange tout à l'heure. Après le directeur exécutif, ce n'est pas de manager beaucoup de choses. C'est juste le top-top. Il est en charge de tout. Il connaît tout autour de la Chanson de la Fondation, mais en termes de manager, ce n'est pas si active. Vous avez vu le tour de la chanson? Oui. Oui. Il se passe en ligne. Oui, oui. Il sera en ligne. Le premier, c'est une conférence globale. Nous allons parler en français, en anglais, en chinois, en portugais et en spain. Oui. Vous avez des questions pour les gens qui suivent la chanson? Si il y a une question, s'il vous plaît, les gens qui suivent sur YouTube peuvent le entendre. Ah, OK. Pour les prochaines. Ils peuvent le entendre. Ils peuvent le entendre, mais pas dans la chanson. OK. Je ne sais pas, c'est la question. La question. Vous pouvez juste répéter la prochaine question. Quand quelqu'un a demandé la question, répétez la question qu'il a demandé avant votre réponse. Ça va aider les gens qui suivent en ligne. OK. La première question, c'est où est le pailé de la chanson? Le pailé de la chanson, c'est en ligne. Et Diya? Qu'est-ce que c'est? S'il vous plaît, le pailé de la chanson est là pour vous aider, pour vous soutenir, avec des ressources. Si vous êtes un éducateur, vous avez beaucoup de ressources dans la communauté. Oui. J'ai une question. Qu'est-ce qu'il y a? Qu'est-ce qu'il y a d'autres gens qui n'ont jamais vu le pailé de la chanson en 2019? Mais cette question, quand on a un pailé de la chanson depuis que ce n'est pas le cas en 2019, oui, oui. Je ne sais pas. On doit contacter les organisateurs parce que j'ai été aidé comme volunteer l'année dernière, mais je ne sais pas quand c'est venu. Encore. On doit demander. No more question? Oui. Merci, Danny. Allé. Alors, on va prendre 5 minutes bio break pour les gens en ligne. Vous pouvez faire votre propre schedule bio break et on va revenir en 5 minutes. Qu'est-ce qu'on peut avoir sur YouTube? On va le mettre. Les slides après lesquelles même, si lui, il est partagé, on va le voir sur YouTube. Et on voit pas des slides sur StreamYard. T'as pas ajouté toute cette présentation? Qu'est-ce qu'il y a là? Présentation, slides. Ton écran peut-être. Les slides, c'est toujours possible d'en parler d'ailleurs. Share screen. Tours, share, sur StreamYard, Facebook, share screen. Je peux faire de l'entire? Ok. Faut que tu te souviens. Ok. C'est pareil qu'elle. On a le ressort. Il pèse la fois. Et puis, du projet YouTube, les slides pour StreamYard, les slides pour StreamYard, les slides pour StreamYard, les slides pour StreamYard, les slides pour StreamYard, les slides pour StreamYard, les slides pour StreamYard. All right. All right. On commence ça. Au niveau du contenu qui est entretenu. Ok. Les slides, c'est là. C'est bien la bonne écran qu'on voit. Les slides, c'est là. C'est parfait. C'est la crème qui est live, c'est celle-là. Ok. Je vais tourner ça un peu là pour que les gens sur YouTube entendent. Hey. Notre prochain présentateur, notre prochain présentateur, notre prochain présentateur, il est un géant. Il est aussi, il est aussi un ingénieur de data. Et, vous savez, je ne sais pas, je ne sais pas beaucoup d'être un géant moi-même, mais j'espère que, si vous êtes un géant, votre base métabolique, c'est probablement sur l'ordre de, je ne sais, 3500 calories par jour. Donc, vous avez besoin de beaucoup de nourriture. Et maintenant, vous voyez, ça va totalement faire du sens. Parce que notre géant, il est un ingénieur de data de métro. Donc, il figure où la nourriture est. Donc, il peut faire du sens où il va obtenir toutes ces calories. C'est probablement la seule chose qu'il recherche dans ces jours. Et il va nous dire comment faire votre propre source de data de data analysis. Je recommence ça en français. Alors, notre prochain présentateur, c'est un géant qui a un kit de métabolique à 3500 calories par jour. Ça prend beaucoup de bouffe pour faire ça. Il travaille chez métro et il est ingénieur de données de labo. Je pense que je n'ai pas le droit de direction Québec. Comment on dit ça? Un ingénieur de données qui n'est pas un ingénieur. T'es-tu un ingénieur? Moi, c'est un ingénieur de formation. Parfait. Il est ingénieur de données. Je ne vais pas le voir chez toi. Je ne veux pas rien faire de égal pour l'instant. Et puis, il va nous dire comment faire ses propres outils pour la manipulation de données. Jean-Philippe. Cool. Merci pour ma traduction. Je vais me... Parfait. Donc, aujourd'hui, je vais vous parler de la création d'outils maison dans un contexte de traitement de la vie. En gros, c'est comment se créer des outils un peu plus orientés à l'objet qui vont nous permettre de plus facilement passer au travers et cruncher des données de façon plus structurée, si on peut dire. Plus structurée et plus facilement. Donc, avant de tomber dans le cœur du sujet, je suis à la prochaine slide. Parfait. J'ai suivi beaucoup les événements cet été. Peut-être qu'il y avait d'autos du piton et de tout son univers. Il y a vraiment des choses intéressantes que se sont passées cet été. Parmi toutes ces choses-là, ce que j'ai noté entre autres, qui peut être en lien un peu avec la présentation, il y a fameux Get Up Co-Palette version de chat qui est arrivée, qui est vraiment incroyable, qu'on peut avoir des conversations à propos de notre code avec l'assistant Co-Palette, très impressionnant et très intéressant. Il y a aussi d'autres large language models des modèles de traitement de langage qui sont arrivés, qui sont devenus disponibles. Ce sont très impressionnants. Il y a Lama 2 et Falcon qui est arrivée. Ces modèles-là, ce qui est particulier, je dirais, de ces deux derniers modèles-là, c'est qu'il y a possibilité de rendre disponibles localement. Donc, de télécharger le modèle, il y a des versions qui sont plus compressées, des versions qui sont moins compressées, mais de télécharger le modèle et d'utiliser ce type de chatbot, des modèles localement sur un autre entretien. Ceci, si on regarde un petit peu plus loin dans les futurs, ça pourrait faire en sorte que de plus en plus d'entreprises, certaines entreprises qui ont créé peur de laisser à l'extérieur leurs données, pourraient faire en sorte que de plus d'entreprises veulent avoir leurs propres chatbots à l'interne pour pouvoir avoir des discussions à propos, par exemple des questionnements qui ont leur système informatique divers données de l'entreprise. C'est pour cette raison qu'aujourd'hui, je ne vais pas vous parler d'hyrématiquement de ça dans le cas, mais ce que je veux vous parler c'est une méthode pour aller chercher ces données-là qui peuvent avoir été accumulées depuis de nombreuses années, on parle peut-être même dix-quinze ans, ces données-là qui sont disponibles en entreprise et qui faut structurer, pour un jour peut-être les amener vers LLM ou une base de données plus structurée, une base de données vectorielle ou d'autres choses de ce genre. Pourquoi créer ces propres outils en Data Science? Donc chaque entreprise possède ses particularités. Le piton est un langage qui englobe tellement de choses, mais les différentes entreprises vivent leur propre réalité au niveau des contraintes, puis il y a certaines contraintes en piton qu'on peut relaxer. On n'a pas nécessairement besoin de toutes les paramètres d'une fonction pour l'utiliser adéquatement, c'est pour ça que lorsqu'on utilise une méthode un petit peu plus orientée à l'UJ, on a la possibilité de relaxer ses contraintes-là puis de permettre à l'utilisateur de passer par les étapes plus détaillées, ce que je vais vous montrer par la suite. Ce que ça permet aussi c'est de stabiliser les méthodes de travail, donc en utilisant les outils, on a la possibilité d'utiliser ces outils-là. Tout le monde en tendance à travailler davantage de la même manière. Si les analyses sont à leur facilité de la vie, les autres analyses, ça peut faire en sorte que justement tout le monde travaille de la même manière. Ça permet d'éviter des erreurs redondantes. Par exemple, on peut parler lorsqu'on absorbe des données, puis que c'est des codes de produit. Si certains codes de produit ne soient évalués comme des nombres antiés puis qu'il y a des pertes de zéro et que ça crée des problèmes, en ayant les outils sur mesure qu'on se base dans la période de notre entreprise, on peut gérer ce genre de situation-là de façon plus automatique. Puis aussi, comme je disais un petit peu précédemment, ça peut nous permettre de faciliter le transfert de données vers un LLM ou vers d'autres, par exemple, bases de données différents systèmes de l'entreprise. Ce que j'ai fait, je me suis inventé des données. Fait que j'ai utilisé chat GPT, merci d'ailleurs, qui m'a inventé les données. J'ai demandé que ces données-là soient désorganisées. Ce que j'ai fait, j'ai fait par exprès pour l'encodage. Dans l'exemple qu'on a ici, on a plein de fichiers qu'on désire absorber qui sont semi-organisées, sont peut-être. Il y a des encodages différents. Comme j'ai dit que là, il y a des encodages, il y a des NC, il y a des TF-8. Il y a certaines colonnes qui sont en compte. Il y a d'autres qui sont en supplément. Il y a des nômes de colonnes qui sont différents, dont le contenu doit être impliqué l'une d'un à l'autre pour être agencé. Il y en a qui sont en français, d'autres en anglais. Des entailles qui ne sont pas toujours dans la première ligne. Il y a des nômes fichiers qui ne sont pas s'enversés. Ce qu'on va regarder, je vais commencer de manière générale. On aura pris un peu plus dans les détails. Ce qu'on va regarder, c'est comment se créer son propre outil maison pour être capable d'assorber ces données-là plus facilement pour l'utiliser, si on peut dire. Donc, la création pour ce qui est de l'utilisation des objets. Ça, c'est une vue un petit peu plus utilisateur en termes pour être capable d'absorber ces données-là. Qu'est-ce que l'utilisateur doit faire avec l'outil pour pouvoir l'utiliser? La première étape, qu'on voit à droite, c'est juste de définir lorsqu'on initialise notre objet, on fait juste définir à quel endroit est-ce que notre dossier qu'on souhaite absorber les fichiers à l'intérieur. Après ça, il y a différentes étapes à laquelle on passe dans des méthodes qu'on lance. L'utilisation à libérer CharDead pour décoder les fichiers. En dessous de cette CSV encoding qui est à droite, on utilise CharDead pour absorber pour décoder les fichiers, la première l'hypothèse sur son encodage potentiel, on peut dire. Ensuite de ça, ce qu'on fait, c'est qu'on détecte les premières lignes dans les fichiers, puis ça nous permet de savoir, pour ceux qui ont déjà utilisé la fonction pd.read.score.csv, il y a des paramètres, c'est le skip-line, mais ça nous permet d'aller le charger d'avance. C'est pas tout le temps la même ligne que ça débute, ça nous permet de nous faire ma propre fonction pour détecter ce paramètre, pour ensuite l'utiliser par la suite. Au niveau des séparateurs, lorsqu'on est dans notre prise, comme à Montréal, plus Anglais-Français, il y a certains utilisateurs, on se met dans un contexte, si on revient au fichier CSV qu'on parlait, on se met dans un contexte pour pouvoir passer pour plusieurs personnes. Ici, j'ai produit effectivement 2 ans, mais ça pourrait être 10 ans, 15 ans de données même. Ça peut avoir été des utilisateurs, dont les utilisateurs étaient en français, dont les utilisateurs étaient en anglais, ce qui a fait en sorte que les séparateurs des fichiers ne sont pas les mêmes, anglais, plus de type virgule, puis le français type point virgule. À droite, notre méthode get de CSV file separator et header row number nous permet de gérer ce genre de situation-là de façon plus automatique. En suite de ça, basé sur nos données actuelles, on récolte les types. Au niveau de la définition des types, lorsqu'on importe des données, c'est sûr que c'est tout le temps une bonne pratique, mais il faut qu'on regarde les colonnes pour voir des colonnes qui sont en nombre, c'est-à-dire du texte, c'est-à-dire des dates. Ce que la méthode getDetect nous permet de faire, c'est qu'elle a fait simplement l'audé les types par défaut. Donc, suite à l'analyse de l'ensemble de ces fichiers-là, on a vu, par exemple, une colonne qui est en entier pour un fichier, mais pour le septième fichier, j'ai des caractères de texte. Donc, la fonction comprend tout ça à travers des fichiers et va faire sortir le paramètre de nombre, le paramètre de type qui est le prédominant, le plus flexible dans tout ça. Ce qui l'aide par la suite, ETL, Extract Transform and Load, si on a les bons sites de données dès le départ, la transforme va se faire plus facilement en le 17 état plus. Au niveau qui parle à suite, on donne la possibilité à l'utilisateur de simplement coller les paramètres par défaut, puis faire les modifications qui veulent si nécessaire, c'est ce qu'on voit à droite. Le deuxième outil, la deuxième classe c'est de combiner des colonnes ensemble. Si on vient nos fichiers de part qu'on désire absorber, à cet état-là, on a vraiment des noms de colonnes qui ont des noms différents, mais qui, en réalité, le contenu, c'est la même chose. Donc, cet outil nous permet de plus facilement prendre des décisions ensemble. Est-ce que c'est le même type de données? Si oui, on peut les absorber. Les étapes, en gros. C'est vraiment un exemple que je fournis, mais ça peut être plein de méthodes différentes. Donc, l'initialisation, au départ, on fait juste charger en mémoire le DataFrame. Par la suite, ce qu'on fait, c'est qu'on utilise des données qui nous permettent d'analyser juste les noms de colonnes et regarder c'est quoi les noms de colonnes qui se ressemblent et potentiellement les joindre ensemble. L'autre étape, d'après, on préserve seulement les coques qui peuvent potentiellement être matchés ensemble. En regardant les données, lesquelles données qui peuvent s'invulquer l'une dans l'autre sans se tôt écraser l'une de l'autre. Cette colonne peut s'invulquer avec les données vides de cette autre colonne. On a la possibilité de tout mettre ça ensemble avec l'outiquet. Ça nous donne des méthodes données à propos de nos fameux fichiers textes. Ensuite de ça, la dernière étape, c'est de simplement les indiquer avec les outils qu'on a par la suite. Au niveau de, pour le moment, les indiquer, l'utilisateur, la possibilité, vous allez voir plus en état, la possibilité de faire des copies collées pour simplement aller charger, aller écrire dans la fonction transfer columns qui est à droite, comment l'information doit être impliquée l'une dans l'autre. Donc, si on va au niveau du code... Merci. Fait que je vais en mode débat, pour qu'on voit plus en détail. Ok, donc, notre CSV reader agent, son travail, c'est d'absorber les données avec les bons encodages. Au départ, tout ce qui est fait, c'est qu'on définit le chemin où sont situés l'ensemble de nos fichiers CSV qu'on voyait plus tôt. Puis qu'on a une fonction ici pour aller absorber la liste des fichiers absorbés. Ça va juste sortir pour ça. Ça absorbe les fichiers CSV et ça absorbe aussi les fichiers textes qui peuvent avoir à l'intérieur un style CSV. Donc, une fois que ça s'est fait, on a notre liste de fichiers qui est définie dans notre objet. On peut continuer plus loin. Puis, on fait une première détection d'encodage de ces fameux fichiers. Donc, on regarde de quoi, basé sur la librairie de Chardet qui ici, scan nos fichiers. Puis, on demande à la librairie qu'est-ce que tu estimes quel type d'encodage tu crois que ce fichier texte ou CSV est. Et donne-moi les résultats. Je vais passer un petit peu plus vite là-dessus. En arrière-plan, on se fait une sorte de table de métadonnées à propos de nos fichiers. Si je regarde, par exemple, la metaframe qu'on a ici en arrière-plan, ça fait qu'au début, nos métadonnées, on a juste le long de nos fichiers. Puis après ça, on a l'encodage qui a été détecté par défaut par la librairie Chardet. Par la suite, si on continue, cet étape-là, nous permet de détecter, comme je disais un petit peu plus tôt, les séparateurs, puis où est-ce que les données commencent? Parce que dans un contexte que ça fait plusieurs années, il y a du monde qui a eu des opérations manuelles en arrière-plan qui font en sorte qu'il y en a qui ont l'extraction, s'habitait à première ligne, là où ça a débuté à deuxième ligne, ainsi de suite. Ici, on va regarder plus en détail qu'est-ce qui se passe derrière ça. En ce qui concerne la détection du séparateur, on utilise une fonction ici qui fait juste ouvrir les fichiers. On va rentrer en arrière-plan. On fait juste ouvrir les fichiers, puis on regarde en intérieur. Lorsque je parcours ma première ligne, est-ce que je vois une virgule ou sinon un point virgule, puis dès qu'on voit la première information, on considère que c'est ça. C'est sûr qu'on est dans un contexte si on essaie de relaxer les contraintes. Ce n'est pas tout le temps vrai. Cette situation-là, par exemple, c'est vraiment à la base, parce que ce n'est pas tout le temps vrai que cette méthode-là fonctionne. Puisqu'on considère qu'on est dans notre propre organisation, on se bâtit des outils dans le but de sauver du temps sur la définition. On considère que ça fonctionne dans notre méthode habituelle. Jusqu'à un jour, on décide de faire évoluer cet outil-là davantage en fonction de toutes les données qu'on lui a fournies. Donc je vais remonter le niveau. Je vais encore remonter le niveau. Une fois qu'on a ces informations-là, d'ailleurs, on va regarder les méthodes données en arrière-plan avec lesquelles on est rendu. Oups. Je vais cliquer sur le mauvais bouton. Ok, toujours en ligne. Oui, oui. Ok. Present. Entire screen-share. Excellent. Donc, si je reviens à cette étape-là, notre objectif de cette étape-là, c'est de fournir à l'utilisateur de nos utilisateurs. Quelque chose qui lui permet de définir facilement ces types. Pour dire, cette colonne-là est considérée comme un nombre entier. Cette colonne-là est une texte. On va regarder en arrière-plan ce qui se passe là-dedans. Au départ, une fois qu'on a construit nos méthodes données, on s'en va bâtir la colonne, ce qu'on appelle notre home-encoding, qui a une fonction ici qui nous permet de faire des modifications sur l'encodage qui est détecté par la libérie de départ, par la réalité de notre entreprise. Dans un contexte d'anglais français, ici, bien sûr, on tourne les coinons, mais le but, c'est de sauver du temps pour absorber plusieurs fichiers. Donc, après des essais erreurs, on considérait que la ski rentrait bien dans un NC. Donc, on se donne ces règles-là. Par la suite, on fait des tentatives d'importations. Si il y a des importations qui ne fonctionnent pas, on se garde la possibilité et si la solution fonctionne avec la donnée, on va indiquer dans nos méthodes des données que, finalement, notre home-encoding, c'est cet engagerage-là. Donc, si je reviens à plus haut niveau, je vais descendre un petit peu plus bas. Ok, donc une fois qu'on a fait ces opérations-là, notre but, c'est de combiner la liste de toutes ces informations-là. Et on en profite, en même temps, pour nettoyer une autre colonne. Il y a différents systèmes, là, qu'on extrait les données, qui mettent des caractères qui ne sont pas tellement amicales pour, par exemple, des systèmes de gestion de base de données qui sont plus rigoureux au niveau des caractères possibles dans nos noms de colonne. On en profite pour nettoyer nos colonnes. Dans nos noms de colonne, tant qu'à être là-dedans, c'est ce qui est fait à cette étape-ci. Au niveau de nettoyer les colonnes, c'est tout simplement qu'on lui dit de préserver seulement tout ce qui est les lettres de l'alphabet en minuscule, majestule, les chiffres et les underscores. Par la suite, ce qu'on fait, c'est qu'on crée une nouvelle colonne toujours dans nos méthodes données. On crée une colonne par non-colonne dans nos données maîtres. Et ça nous permet d'avoir une certaine vision par rapport à ce que sont les types de données qu'on a dans notre fichier par défaut. Donc je vais passer ça un petit peu plus vite. J'ai déjà un point d'arrêt ici. OK, donc une fois que ça s'est fait, on va garder... En fait, quand on obtient les méthodes données à propos de nos fichiers, on peut les regarder. Je vais les regarder à plus long niveau. Je vais les regarder un petit peu. OK. Nos d-types sont là. Et nos méthodes données, on va aller les prendre par c-r-e-p-o-n-d-f, qui est là. On va copier ça, puis la garder de l'autre côté. On vient de le copier dans le clipboard. On va le coller ici. Avec nos d-types données à propos de nos fichiers, ça ressemble à ça. Le plus important, c'est qu'une ligne représente un fichier absorbé. Donc on voit un peu les étapes qu'on avait passées au départ. Notre encodage détecté par la libériste ASCI, par la suite notre séparateur, c'est un virgule. Dans certains cas, on voit ici que notre séparateur a été détecté comme étant un point virgule. Notre première ligne pour chacun c'est les fichiers. Il y en a un qui a été détecté à deux. Après avoir fait des tentatives d'importation avec les fichiers, ou appliqué nos types d'encodage qui sont plus fréquents d'entreprise, on ramène notre home encoding. Dans notre cas, on peut voir les modifications qui ont été faites sur l'encodage. Par la suite, on a nos noms de colonne en format réel. Ensuite de ça, on a nos noms de colonne qui ont été structurés pour qu'ils puissent être envoyés plus facilement dans une base de données. Les deux étapes de la presse c'est le même genre d'information sauf qu'on a aussi le type associé à chacune des noms de colonne. Donc ça c'est la même chose quand les noms de colonne sont structurés. Et là, ce qu'on regarde à droite c'est un peu le résultat de tout ces informations-là. On voit par exemple que la colonne order ID se trouve dans plusieurs fichiers et la fonction de pandas l'évaluer par défaut comme étant des noms branchés. Par contre, si on regarde un petit peu plus loin ici la colonne quantity units dans certains cas elle a été évaluée comme des noms branchés dans d'autres cas, elle a été évaluée comme du texte. Ce qu'on fait, c'est qu'on regarde au travers de tous ces types-là et on se bâti notre type le plus prédominant et dans ce cas-là par exemple, ça serait le string qui serait le gagnant parce que ça nous permet ensuite de ça lorsqu'on arrive à plus haut niveau d'absorber nos données et d'englober l'ensemble de ces données-là qui sont pris facilement et s'en bogue bien sûr. Je vais passer un petit peu plus vite sur cette partie-là à un point d'arrêt. Notre type par défaut après cette analyse-là on les obtient ici. Je vais utiliser print pour les voir au complet. Ici, c'est notre type après avoir passé de tous ces analyses-là puis qu'on allait chercher nos types prédominants dans l'ensemble de nos textes pour faire l'absorption réelle de l'ensemble de nos données dans un dataframe. Ça, je vais passer un peu plus vite. On va regarder de quoi ça l'a par la suite. Parfait. Je vais printer le dataframe très rapidement, ça ressemble à ça. On a quand même encore plusieurs colonnes. Il y a une colonne. Le deuxième outil, son travail, c'est de nous aider à combiner ces fameuses colonnes-là. Il y a des colonnes qui ont des noms différents dû à, par exemple, la langue qui est une langue qui a changé d'une extraction à une autre. Mais on sait qu'en arrière-plan, c'est la même information. Cette outil-là, cette petite outil-là maison, nous permet juste de combiner ces informations-là. Les premières étapes, au niveau d'initialisation de la classe, on fait tout simplement charger le dataframe. Ça, je vais passer vite là-dessus. L'étape suivante, on nous permet d'utiliser une libéerie qui fait juste une comparaison au niveau du nom de la colonne très rudimentaire, mais qui regarde cet nom de colonne-là par rapport à cet nom de colonne-là. Est-ce qu'ils sont très différents ou qu'ils se ressemblent beaucoup? Le but, c'est de partir avec quelque chose qui par la suite d'une fois que la libéerie c'est fausse qu'on voit un petit peu plus haut, fausse-y-wasse, puis on utilise fausse. Une fois qu'on a ça, encore une fois, on s'est bâti des méthodes années. Vous allez voir, la méthode année, cette fois-ci, c'est plus le fond de mattress. On s'est bâti de genre de mattress qui nous permet de voir qu'est-ce qui a été évalué comme similaire. Fait qu'il n'a pas encore chargé en mémoire. Fait qu'on va la prendre de même. On va juste la copier notre mattress. Ici, je vais la prendre à plus haut niveau. Je vais la prendre à plus haut niveau ici. On va la regarder pour voir de quoi plus en détail. On va regarder ici qu'on va formater un peu mieux pour qu'on soit capable de plus voir. Donc, on a une seule atmosphère qui est remplie parce qu'on ne souhaite pas comparer deux fois la même colonne. Je vais faire un formatage par rapport à ça qui va nous permettre de mieux voir. Ce qu'on regarde ici, c'est à quel point un autre colonne ressemble à un autre. La méthode utilisée derrière, je ne la connais pas en détail, mais à ce niveau-là, on peut dire qu'il y a une certaine similitude entre les données. Si on arrive ici et on regarde on s'intéresse, par exemple, les valeurs les plus élevées, mais on voit la 96 ici. Donc, la quantité unit a été considérée très similaire à la quantité unit. Donc, c'est une autre colonne qui était différente à l'éficier. On va continuer un petit peu plus loin. Cette fois-ci, ce qu'on va faire, c'est qu'on rajoute un étape supplémentaire à ça pour regarder, non, les noms de colonne qui se ressemblent, mais nous autres, on veut aussi savoir est-ce que ça peut être matché ensemble? Est-ce que les données d'une colonne peuvent rentrer dans les données de l'autre colonne sans écraser des valeurs? Donc, c'est ce qui est fait avec la prochaine partie. Je vais l'exécuter plus rapidement. Puis on va la garder encore. Puis on va voir, justement, puis on va voir qu'il y a des cas qui ont été éliminés. Si je fais contour Z, c'est ce que l'on avait avant, c'est ce qu'on a maintenant. Ça a éliminé des cas parce que c'est impossible de les matcher parce qu'on allait écraser des données. On s'attend pas à écraser des données lorsqu'on essaie de combiner des colonnes ensemble. Par la suite, c'est un display matrix. Rendu là, ce qu'on fait, c'est que on met les matchs, les plus élevés ensemble et on essaie de donner à l'utilisateur de l'outil quelque chose qui va lui permettre de plus facilement combiner ces colonnes. Parce que le but, lui, c'est de l'aider à remplir les paramètres qu'on voit par la suite. Donc, cette colonne-là peut rentrer dans celle-là. C'est là, peut rentrer dans celle-là. Donc, ce qui est fait à cette étape, c'est un peu de bâtir cet outil-là pour nous permettre de faire cette combinaison-là, basée sur les méthodes qu'on a vu précédemment. Encore une fois, tu sais, c'est des suggestions. Il y a plusieurs méthodes de faire ça. Il faut l'attapter aussi aux besoins de son organisation pour voir, historiquement, on aura marqué ce genre de comportement-là. Ça fait qu'on se bâti notre petit par rapport à ça. Et petit par en temps aussi, c'est bien, lorsqu'on se bâti ces outils-là, c'est de garder une trace aussi sur toutes les chemins des fichiers qui ont été absorbés. Pour par la suite, si on va faire les médications puis améliorer notre outil, on peut les tester sur ces différents outils-là, sur ces différents fichiers-là pour pouvoir plus facilement les absorber. Et faire des médications, chaque fois qu'on fait une médication, il faut s'y fabrizer ce qu'on a déjà bâti dans le passé. Donc, petit par en temps, c'est bien de se conserver un genre de registre de l'ensemble que l'on a déjà apporté pour être capable de faire évoluer nos outils. Donc, si je continue plus loin. Donc, une fois qu'on est à cet étapes-ci, on a un certain match qui a été fait si je ne m'en trompe pas. OK, parfait. Donc, on a ici nos matchs par défaut qui ont été gérérés par notre outil. En fait, pardon, on a notre data frame qui nous permet de visualiser de façon plus friendly nos données, puis regarder est-ce que on croit que cette information-là peut être s'imbriquée facilement dans un autre fait. Si je regarde, on va regarder de quoi ça va plus précisément. On va mettre ça un petit peu pour que ça soit plus friendly. Donc, on a aussi utilité que basé sur notre analyse qu'on a faite au départ. Voici ce qui, potentiellement, pourrait être l'écoline qui pourrait être l'un dans l'autre. La meilleure de le voir, c'est deux par deux. Donc, on voit ici un order ID et un numéro de commande basé sur notre analyse préninaire. On croit que c'est un potentiel de match. Il y a des places avec contrôle, puis je descend vers là-bas. On voit qu'ici, c'est vrai, l'implication pourrait se faire à ce niveau-là. Ça nous permet de combiner nos données. Si je remonte, nos deuxièmes candidats potentiels, c'est au niveau de je vais monter plus loin. Ces deux contenants, product name, et non du produit. Ici, c'est réelé à la traduction. On peut voir que ça, ça peut se connecter avec nos autres données. L'utilisateur, tout ce qu'il y a besoin de faire, c'est d'aller copier ceci et le mettre dans son dictionnaire qui est utilisé lors de la prochaine méthode, qui permet de bâtir plus facilement ces données-là et les impliquer l'un dans l'autre. Une fois que tout ça roulait, c'est qu'on obtient notre DataFrame. Notre DataFrame représente l'ensemble de nos fichiers que l'on a tenu pour tous nos fichiers de texte, nos fichiers CSV, combinés ensemble. Ça fait le tour de l'outil. Ce que j'aimerais qu'on retienne de tout ça, c'est que c'est possible de les adapter à notre organisation et pour faciliter la tâche de tout le monde. Dans le ETL, il y a la partie I qui est très importante, c'est l'absorption des données. En ce bas de sens, ces propres outils d'absorption de données, on peut se faciliter la tâche dans plusieurs cas. Ça conclut ma présentation. Est-ce qu'il y avait des questions? Qu'est-ce que Jean-Philippe? Oui, je vais te répéter pour les gens qui nous suivent sur YouTube. Vous pouvez poser vos questions sur Slack, ou dans les commentaires YouTube, ou sur Matrix. Et puis, Duc, il va les relayer de voix haute. Et Jean-Philippe, s'il vous plaît, révête les questions. Je ne le connais pas dans les détails mais il y a un match au niveau du caractère, tout simplement la distance entre les caractères, mais il y a aussi la possibilité d'avoir une distance entre les mots. Donc, de regarder ce mot-là par rapport à ce mot-là, c'est quoi la distance? Et ce que j'ai remarqué, c'est qu'il semble avoir un niveau de traduction interloir. Je ne veux pas m'avancer dans la méthode, mais j'ai quand même été impressionné avec le peu de temps que j'ai utilisé l'outil des résultats. C'est ça, ça n'a pas fait partie de ton outil maison? Non, c'est ça. On m'a utilisé d'autres outils derrière. Ce qui fait à lui, c'est qu'il structure l'utilisation d'autres outils de genre. C'est quoi le nom? Fozzy was. Est-ce que tu fais quelque chose pour les doublons? Non, mais c'est vrai qu'il n'y aurait plus à avoir. Je le vois plus au niveau de transform. Dans certains cas, on peut s'intéresser aux données en double. C'est notre objectif. Dans certains cas, la donnée en double, ça peut être une donnée intéressante. Si on cherche, par exemple, à trouver les problèmes dans un système, on agrège à un plus haut niveau pour enlever les doublons, ces choses-là, ou qu'on les publie à quelque part. Mais les détecter. Moi, c'est vrai. L'outil peut être adapté, ce genre de choses-là. C'est vrai, c'est un bon point. Fichier qui s'est répété, par exemple, c'est des choses qui peuvent être faites, c'est le maison, pour ne pas plus tard réaliser que, oh, j'ai des doublons, c'est pour ça que ça ne fonctionne pas. Effectivement. Est-ce que tu penses partager ton code? Moi, je peux le partager. C'est un code que j'ai fait pour la présentation. Donc, il n'y a pas de problème. Les données sont fixées, elles sont inventées grâce à ChatGDP, qui facilite l'appareil pour réinventer des données. On va s'organiser pour avoir ton code et envoyer au... Parfait. Merci. Il y a 5 heures à la fin de cette vidéo. Merci. On va se prendre une petite pause, 4 minutes de bio-break. Les gens sur YouTube, les gens en YouTube, ont commencé en 4 minutes. Ça va être... Ok, je sais pas. Il faut continuer. Mike, check. Est-ce que tu es bien, ça? Biré? Wow, j'ai vu... Un petit accent européen, qui était plus biré. Est-ce que tu m'entends bien? Est-ce qu'on m'entend avec ça, ou pas aussi? Ça, ça n'a rien du tout. On ne voit pas encore... Ouais, j'ai pas encore partagé. C'est parce qu'il y a même une présentation. C'est une désactivée. Ok, c'est bon comme ça. C'est bon comme ça? Est-ce que je vais faire en anglais ou en français? C'est pour vous, moi. Vous avez pas de défense pour l'avenir? C'est pour vous, parce que l'abstract en enut. C'est en anglais. Oui, parce que pour vous, il y a une petite pause, c'est pour vous, puis on va aller en français. Il y a une action, qui se passe, en anglais. Sauf que l'arénate est juste une faute. Comme je veux. Je vais me remercier. Ok, mais on va recommencer. On va se confier. Oui, oui. C'est pour vous. On va parler de pays, d'intégration avec les obéis. Donc, des fois, on a des sources de données qui sont hétérogènes et puis des colonnes qui n'ont pas les mêmes noms. Des fois, on a des obéis. C'est la même chose. C'est différent, puis des formats différents. Et puis, Vincent Bière, qui est développeur ici chez Microsoft, va nous aider à intégrer tous ces obéis hétérogènes avec Kyoto. Je vais faire ça dans l'année. Donc, maintenant, on va parler de l'API. Donc, nous avons vu que des données, parfois, les colonnes sont différentes, les types sont différents, et ça peut être stressant. Mais vous pouvez tirer votre oreille. Ça peut être stressant. Oui, c'est ça. Je n'ai pas de ma neige à la tête. Et on a des problèmes avec les obéis. Les types sont différents, la forme des paramètres sont différents. Et maintenant, Vincent Bière, qui est développeur ici chez Microsoft, va nous aider à intégrer tous ces obéis hétérogènes avec Kyoto. Merci beaucoup, Donc, avant de commencer, Est-ce que quelqu'un ne parle français ? Non, pas très bien. Vous préférez me faire ça en anglais ? Oui. Est-ce que les slides sont en anglais ? Oui, parce que je suis trop facile à transmettre. On va aller en anglais. Si personne ne m'entend, oui. Bienvenue, tout le monde. Bienvenue à Microsoft Montreal. Merci d'être venu aujourd'hui. Je vous souhaite que vous ayez un bon temps. Je vais vous attendre, parce que je ne vais pas tarder. Oui, exactement. Bonjour, je suis Vincent. Bienvenue à tous. Normalement, nous sommes trois personnes qui font cette présentation. C'est plus drôle, nous pouvons faire des gimmicks. Mais l'un d'entre nous est malade, et l'autre d'entre nous est double booké dans tant de meetings. C'est probablement que je ne vais jamais dormir. Donc, vous n'avez que moi aujourd'hui. Je suis désolé pour ça. Je vais essayer de vous entraîner et vous ennerer autant que nous pouvons entretenir les gens avec la liberté de nous. Seb, c'est le manager productif pour Kira. Darryl est notre architecte, et je suis le développement de la thule. Je vais vous présenter aujourd'hui. Nous sommes tous en base à Montreal. Nous travaillons beaucoup pour Microsoft, et nous sommes tous construits pour la thule. Avant de parler de la thule, je vais vous dire pourquoi et comment nous sommes dans la thule. et de l'économie et de la technologie. Et pour comprendre cela, vous devez comprendre où nous sommes et à quel point nous travaillons sur Microsoft. Nous travaillons sur la team Microsoft Graph. Aucun d'entre nous a entendu parler de Microsoft Graph avant, la phrase. Wow, c'est nouveau pour tout le monde. Ok, alors, c'est ok, vous ne devez pas savoir quelque chose de Microsoft Graph pour cette présentation. Microsoft Graph est une gigantique API, mais c'est Microsoft, c'est construit par Microsoft, qui vous permet d'accessuer, comme développeur, dans toute la langue, c'est une gigantique API, pour des données, comme votre calendrier, vos emails, vos chats de teams, votre pilote de 1Drive, et beaucoup d'autres choses. Tout le Microsoft Graph, c'est une gigantique API, nous avons plus de 5 000 endpoints. Nous supportons plus de 20 000 opérations, post-patch, boot, etc. Vous pouvez voir que c'est une gigantique API, nous avons construit des expériences clientes à la scale de l'API, et c'est pourquoi nous avons construit un code générateur pour les opérations restantes. Notre équipe est spécifiquement responsable pour construire des expériences clientes, des détails clientes, tous les choses, et ce qui était là-bas, c'est que l'économie de l'économie, avant qu'on a commencé à construire le code, il n'y avait pas de scale qu'on a besoin, il n'y avait pas de l'expérience qu'on voulait produire pour les développeurs, et c'est pourquoi nous avons pu restarter l'effort de construire. Aujourd'hui, Microsoft Graph, nous avons un télémentaire qui nous dit qu'on est en train d'utiliser des clients, comme HTPX, par exemple, et nous sommes en train d'utiliser un SDK pour qu'on appelle Microsoft Graph, pour qu'on puisse faire attention à construire l'application, à ne pas construire le code restant. Aujourd'hui, à moins qu'à la fois que la data est correctée, c'est probablement responsable. Nous avons plus de 500 000 applications utilisées par SDK. Mais si nous regardons à combien de requests qu'on fait par mois, par mois, avec notre équipe avec Qt9, etc. Vous pouvez voir que nous sommes en train de construire des outils pour la scale, pour beaucoup de requests, beaucoup d'applications, beaucoup d'applications, etc. Et cela va bénéficier de la communauté de l'application. Mais quand nous regardons la data plus bas, on peut voir que historiquement, la majorité d'applications de Microsoft Graph n'est pas utilisée par SDK. Ils sont en train de croître leurs requests et envoyer cela au service. Et c'est bien jusqu'à ce que vous pensez de toutes les différentes choses. Pourquoi serait-il plutôt d'évoquer ou d'évoquer des expériences plutôt que de construire vos propres requests utilisées par vos clients ? Quand vous pensez à des choses comme les clients qui ont tenu, tous ces choses doivent être réveillées. C'est beaucoup de code que vous n'aurez pas pensé sur des voies, mais si vous n'avez pas les revoquées, il faut être implementé par vous. Par les SDKs ou les expériences de SDKs, vous pouvez enlever des features comme l'accessibilité, des supports de longues discussions vous-même, mais que vous vouliez soutenir une grande expérience à votre end-usage pour votre application. Et bien sûr, vous voulez votre application pour être résilient. Donc, vous vouliez soutenir la rétraitation, quand quelque chose ne va pas, vous vouliez être résilient à n'importe quel salaire, etc. Et vous ne voulez pas être en prenant vos modèles manuellement. Vous vouliez faire sure que vous avez des modèles. La stabilisation de cette relation n'est pas pour vous. Si vous avez des propres chaussures dans le Json payload, ça ne vous augmente pas votre application, parce que vous n'avez pas les plans pour cela, etc. Vous ne vouliez pas utiliser un SDK si vous ne vouliez pas focussé sur votre application, votre co-logique, votre valeur de travail. Surtout en focussant sur les réquisitions d'implémentation de l'HPQ, ce qui n'est pas là où la valeur est le plus importante. Donc, on utilise la faible pour vous, pour ne pas vous en faire en manuel. Qu'est-ce que vous ressentez sur le SDK? Normalement, si je vous demande qui aujourd'hui, quand vous allez vers un API, ou un REST API, qui est-il en train d'avoir un SDK? Non, en tant qu'à manier, vous n'avez pas besoin de vos propres réquisitions. D'accord. Vous le voyez parfois, ça dépend, parfois. OK. Qu'est-ce que vous pourriez faire en prenant vos propres réquisitions? OK. C'est-à-dire, vous n'avez pas besoin d'un REST API ou d'un code générateur? D'accord. Et donc, généralement, quand vous portez une audience comme ça, c'est ce que l'on obtient. Certaines personnes ressentent bien sur le SDK, parce qu'on vient de l'application, on commence l'API, on n'a pas besoin de vos propres réquisitions. Qu'est-ce que vous faites avec les propres réquisitions? C'est-à-dire, vous prenez les données, on n'a pas besoin de vos propres réquisitions. Mais, quand vous regardez les APIs qui n'ont pas d'un SDK pour Python, par exemple, ou d'un RAPI SDK pour Python, c'est le plus mauvais. Vous vous rendez de temps sur vos options, et vous défautez de retour en créant vos propres réquisitions. Donc, quand vous avez des développeurs, comment vous ressentez sur le SDK? C'est bien, c'est bien, mais la plupart du temps, ce n'est pas bien. C'est-à-dire, c'est-à-dire, c'est bien. D'accord. Donc, généralement, si vous vous rendez sur la route de création de vos propres réquisitions, vous dites, hey, je ne veux pas apprendre encore un SDK, car c'est différent d'un SDK d'un RAPI, d'un SDK d'un RAPI, d'un RAPI, d'un RAPI, et je sais que je suis un client de HTTP, donc je peux le faire par moi-même. Je suis un grand développeur. Je n'ai pas besoin d'aide. Je ne veux pas faire des extra-dependences, parce que je fais des choses de maillons, de l'espace, je ne veux pas faire des extra-dependences. Je n'ai pas besoin d'un autre bunch de dépendances. Je ne savais pas qu'il y avait un autre SDK. Peut-être que c'était difficile de découvrir, peut-être qu'il n'était pas publicisé. J'ai besoin de de la performance haute, de l'attention haute, de l'application haute, c'est énorme. Je n'ai pas besoin de votre application. Je n'ai pas besoin de ces choses. Je n'ai pas besoin de ça. Est-ce que le SDK fait plus que ce que je fais quand je suis crafté mon code? Et c'est pour la qualité. A.k.a. le SDK a été publié la dernière fois en 2012. C'est un Python 2.3 qui n'a jamais été programmé depuis. C'est complètement évolué. Je n'ai pas besoin d'un autre application parce que je fais production code. Ce sont les raisons populaires pourquoi les gens ne veulent pas utiliser les SDK. Ce sont les choses qu'on est essayant d'arriver et de faire une grande expérience sans falloir falloir dans ces transports. Alors qu'il ne faut pas utiliser les SDK. Pourquoi n'a-t-il pas plus de tools pour les SDKs? Si on regarde nos écosystèmes, ils ont d'habitude des interfaces de language ou format qui leur dit c'est mon API c'est ce qu'il y a des types différents et c'est un format de machine readable. En utilisant le format des types et les types qui l'ont extracté de vous pourquoi les API sont différents? Pourquoi n'a-t-il pas de des tools pour générer ces choses et faire une expérience de l'application? On va prendre un exemple très populaire et on va à la développeur si on développe de la développeur on va dire qu'on a SDK pour un Node.js et un Python si on utilise un Python on va utiliser un Python pour générer un expérienceSo now you are like Alright Let's ditch this first party offering from Open.ai I know we have an Open API description I'm going to use that or for party As you can okay Does anybody know who knows what Open API is 12345 Open API pour décrire ce qu'il y a sur REST API. Il vous dit qu'il y a un endpoint, il s'agit d'une version de GET, il y a des paramètres, des types différents, des noms, etc. Et ici est la réponse. Elle est formée dans un type de contenu. C'est un objectif, il y a tous ces différents propriétés. Et c'est une description exhaustive de votre REST API qui vous permet de faire des choses avec ça. Il y a des documents généraux, des codes généraux, des tests de validation, et c'est le format que nous allons utiliser pour générer nos points. Maintenant que vous savez qu'on a une description de l'application qui ressemble à ça, il vous dit qu'il y a un endpoint et qu'il accepte des paramètres, des trucs comme des strings, des arrays d'integers, des arrays d'integers ou des arrays d'integers. Et maintenant, vous êtes en train de se demander ce que ça veut dire. Qu'est-ce que je suis supposé d'appliquer à cette API? Je ne comprends pas ce que c'est pour s'accepter. Je dois comprendre les types de union et les types de composition. C'est super compliqué. Je ne veux pas être en train de faire ce genre de choses. Maintenant, vous êtes en train d'appliquer à cette API. Vous pouvez imaginer la même situation sur PyPy. Si vous regardez l'application d'OpenAI, vous avez 37 packages d'appliquer à cette API. Qu'est-ce que je dois prendre? Qu'est-ce que c'est plus important d'appliquer à cette API et d'enregistrer un code? Peut-être que ça ne marche pas. Qu'est-ce que c'est plus important d'appliquer à cette API? Si vous faites le même exercice d'appliquer à l'application d'OpenAI et ce n'est pas officiel d'appliquer à l'appliquer et ce n'est pas officiel. On peut le faire un peu plus tard pour PyPy mais je suis sûr qu'il y a peut-être des packages d'appliquer à l'application d'OpenAI. C'est un désastre. La première partie n'est pas probablement une SDK. La description de l'appliquer à l'appliquer est super complexe. Il y a des packages d'appliquer à l'application d'OpenAI. Et maintenant ce que vous pensez c'est que c'est juste un petit API j'en vais crafter mon propre request et vous êtes en train de comprendre ce que l'appliquer à l'appliquer ce que l'appliquer à l'appliquer et de modèler les modèles et d'avoir des classes et d'avoir des services qui peuvent être faits pour vous pour que vous puissiez profiter sur votre application. Pour l'introduction de Toyota ce que Toyota fait c'est de lire l'application d'OpenAI c'est de projeter sur votre application il crée un code-model il refient ça par un langage parce que le code-model est un langage agnostic et puis on refient basé sur le langage que nous allons produire pour générer le code source que vous pourrez utiliser sur votre application. Et ce que nous générons c'est une partie des laitres des clients que vous allez utiliser il y a, bien sûr, le site qui est ici et c'est sur l'application mais il y a aussi un bunch d'applications. Une promesse qui vous rend quand vous générez votre code c'est d'abstracter un bunch de concepts pour contrôler. Je sais qu'il y a beaucoup d'applications sur le site. Vous n'avez rien d'autre. C'est vrai qu'il n'y a pas d'applications pour l'application et il n'y a pas d'abstractions. Il n'y a pas d'applications pour les formats pour l'application pour l'application pour l'application pour l'application pour vous pour les différentes abstractions. Maintenant, par combiner l'application vous avez un complet client qui apporte des formats qui ont une partie de l'API si vous avez besoin de l'application ça ressemble bien? Oui, bien sûr. Encore une fois, nous avons des outils, GraphQL, un système d'application avec différentes idées etc. Mais c'est une bonne expérience. GRPC a un moyen d'appliquer des types pour vous automatiquement. Et là, on le dit, SOAP a été créé 20 ans auparavant. Vous vous souvenez de SOAP? Qui a toujours été créé? C'est ce qu'on set-up pour SOAP. Les restes d'applications sont très bonnes. Ce n'est pas du tout. Et nous essayons de changer comment les gens consomment les restes d'applications. Vous avez une bonne expérience quand vous faites SOAP. Pourquoi est-ce qu'il y a des différences? C'est pour ça que l'API continue. Il y a un moyen de découvrir différentes services. Il apporte tous les intérêts de l'API. Il y a des choses d'intersections d'intersections, d'union, d'inertes et d'autres choses que vous devez prendre pour générer un propre code. Nous évoquons l'application passée de l'API pour organiser le code. C'est facile de traiter et d'en comprendre. C'est une partie de la code pour cette partie de l'API. Et c'est fondé par Microsoft. Nous avons une partie de l'API qui nous aide à construire le tooling et le projet. Ce n'est pas seulement les membres de la communauté. Merci pour le demo. C'est bon. Dramatique pause pour le demo. Alors, nous allons commencer. Qui ne sait qu'est-ce que Github? Il sera surpris. Il y a des gens qui ne le connaissent pas. Github est pour les développeurs qui veulent faire le travail d'open source. Ce n'est pas le seul, mais c'est l'un des meilleurs. Pour ce projet et l'application, j'ai Sebastian. J'ai Sebastian, qui n'est pas toujours avec moi parce qu'il n'y a personne qui ne l'a pas fait. Et c'est parce qu'on ne paye pas attention à la notification github. Il y a un spam, et Sebastian m'a créé une application qui a créé un projet pour Microsoft. N'importe qui ne sait pas qu'il y a un couple. C'est un product Microsoft qui est un système de management. Vous pouvez ajouter un produit. C'est juste un système de management. Un produit. L'idée est pour chaque. Je peux vous montrer ce que c'est. Il est ici. Il y a une liste. Vous pouvez ajouter des tasks. Vous pouvez ménager des dates et faire des choses. J'ai dit qu'il n'y a personne qui ne l'a pas fait parce qu'il n'y a personne qui ne l'a pas fait. J'ai créé des tasks pour Microsoft. On s'occupe. Il y a un developer Python parce que Python est mon préféré. Je l'ai déjà fait. Mais c'est assez. Un peu plus. OK, bien sûr. Je l'ai déjà créé. Je l'ai fait. Je l'ai créé. Je l'ai créé. J'ai créé un projet. J'ai pris des dépendances. On ne attend pas. J'ai un professeur pour la construction. J'ai un couple de détails un couple of settings for VS Code, but that's about it. And so, see, blind canvas and we can do anything we want here. And so Seb has asked me to say, get the pull request. So let's set up to do that. Let's try to get pull request from GitHub. And so in VS Code, I have Qtah that is installed here. It's actually hidden here because I'm zooming here, but I have Qtah VS Code extension installed to VS Code. So here what I'm going to do is I'm going to search for an API description here using Qtah. And I'm going to search for GitHub because I know the pull requests are on GitHub. And so there are a number of descriptions that are available and that are found. I'm gonna be using this one because I've been poking around and I already know which one to use. And so what's going to happen is Qtah is going to download the description here and on the left open a tree view of all the different operations that can be sort of path segments that are supported by the API and all the different operations that are supported there. And a repose for dramatic effect. And so now what I'm looking for is actually a pull request. So let's try to, sorry, wrong button. Let's try to filter down a few different things that are on this industry view to say, all right, I don't want all of GitHub API versus API. I don't care about projects. I don't care about issues. I don't care about those other things. I just care about pull requests, right? And so if we expand here, we can see that I can get to pull requests through commits but that might not be the most practical thing to do, right? When I just want to list pull requests or I have these other endpoints here called pools that tells me, that might tell me about the pull request and those other things. If I have a question about that I can always click here on this little book. I don't know if it's big enough to see that it's a book but that brings me to the documentation of the API in case I want to check out the documentation and understand what the endpoints are about. Again, this is GitHub's documentation. We have nothing to do with that. They published that in their open API description. Going back here, I'm going to say, all right, I just want to list pull requests. I don't want to create new pull requests. I don't want to do anything else than that. So I'm just going to add this here, we get a version on call request and I'm going to generate a client here. I'm going to call that client GitHub service client here. I'm going to put it in the namespace and I'll come back to that later. GitHub to demo the client. I'm going to put it in folder GitHub client here. And of course, we're doing Python tonight. So we're going to be doing Python. I could do the same demo and go in C sharp in TypeScript if you want to switch tonight but I guess you're here for Python, right? Yeah. And let's go. So what's going to happen here? It's going to take the description, take the different paths that I have selected and project a client for that part of the API for a part of the GitHub API in my project here. And you can see here that now here I have a new folder which has the GitHub service client which has the different models like the repository model, for example, a team model and other things like that. And it's ready to use effectively. So let's try to use it, let's try to get for requests. Before I can use it, what I'm going to do is I'm going to add the first thing that everybody adds to any project and we won't come back to that later. All my imports. So this way I don't have to auto-resolve all the time. It's much easier. And there we go. And I lost the Python language server so I can do just that. So let's try to get a GitHub client. Sorry, I'm used to all our languages. It, wake up, wake up, wake up. We'll start to do that. I hope that my, ah, there we go. The language server just woke up. My machine is super fast as you can see. And so the, one of the aspects of CUDA clients that you generate is they have this main entry class that's going to be the entry point to all of the UK surveys, but also all from conversion, which is the client, the thing I named at the beginning, right? And from there, you'll be able to access the different APIs in there. So I'm looking for pull requests. And by knowing GitHub, I know that pull requests are within repositories. So that sounds about right. And through dot team, my way through here, you can see we go to completion. I have my client dot repos dot by owner. Now I created a demonstration project, sorry, demonstration repository all year that leaves under my account. And then by repo here, a pools, that sounds about right to get pull requests and dot get because we're doing a get for listing things here. And so just like that, we've been able to, sorry, we're not in that good fever tonight. It's getting late, pull requests. So wait. And just like that, we saw that we are able, we, of course, I'll do it later. We've been able to find an open API description, explore that again description and see all the different tasks and all the different operations, generate a client et through dotting our way through auto completion, we've been able to build the request to get the different pull requests out there, right? So again, I'm not super proficient in Python and so I'm just gonna cheat for, sorry. Yeah, that's the thing that I wanted to cheat for. Thank you for calling me out because Python is not my most proficient language here. And there we go. So just like that, we were able to make a request to get the pull request and to list the pull request. Now, the next thing I want to do is to add tasks for each pull request in Microsoft today for me, right? I'm going to go through the same workflow but I'm going to do that in the CLI this time. Kira is available in two experiences. The first one is as a preview in VS Code like we've seen. And it's also available, the same engine as a CLI and that's generally available. So you have both experiences that exist. If you like VS Code and if you like the integration VS Code, we'll use it. It's in preview because it's experience. And the same engine is available as a CLI as well and that CLI is generally available. It's stable for production and whatnot. So here, if I make it bigger, it's still big enough, yeah, cool. We have the CLI tool here so I can do Kira-dash help here and you'll see that the CLI has a bunch of different comments. So, like I did earlier, I'm going to search for an API for Kudu so I can put my tasks somewhere. And here I'm going to say Kira-search Kudu and see what comes back. So we can see a couple of things here. There are different APIs that are exposed here. There is one about MasterDom. We all love it, right? The future of decentralized social networks, of course. But that's not what we're doing tonight. There is a sample for Python and Mongo. Again, not what we're doing tonight. Probably super interesting, but not what we're trying to do tonight. And more interesting here, there is two APIs, two entries about Microsoft Graph and I know that Kudu is a Microsoft product so it's more likely that the API behind the product is Microsoft something. Microsoft Graph sounds about right for tonight. And so the next command I'm going to be using here is the show command. And like we had a tree view in VS Code, you can show what's on the API surface using that show command. The second tag. And because, again, we have more than 5,000 endpoints, 20,000 different operations, you might not want to display the whole tree. It might take a while to scroll into the console. So we support what patterns to filter your API surface. So you can do things like that. Slash me, like that, Kudu, maybe. And you'll see that's going to apply a filter on the whole API surface and I'm only going to show you a tree for what you filter down. And there you go. So you can see that this is the segmentation of the API in the console. We have a to-do surface API that lives under slash me. Slash me is a shorthand to the current user Microsoft app. That's fine. You don't need to know too much about that. And there are a bunch of different API segments that are supported, but themselves support different operations that are available here. Of course, I don't want all of that, so I'm going to cheat again tonight because we are running out of time. I'm going to do the last one, where I excluded a bunch of things. So I'm going to show you that here. So here I have, of course, an include filter. So please include what matches that, but you can also combine that with exclude filters. Yeah, yeah, within that subset, I don't want that thing, I don't want these other things, so I'm going to exclude it. So we're going to show again, like we've done earlier, but excluding the things we don't care about. And you will see that tree view will become smaller, like that. One nice thing about the CLI, as you can see in the blue here, we have hits here. If you don't know the CLI, if you're discovering it for the first time, it will tell you what the next logical thing you might want to do. It will tell you where the parameters you've already passed earlier. So you can learn and discover the CLI as you go. And so the next thing I'm going to be doing, of course, is generating a client for Microsoft Graph. So here, again, I'm going to cheat here, and I'm going to copy all of that. Et voilà. Et donc c'est parti pour la description, un client en général pour Microsoft Graph, c'est-à-dire pour la 2Do APIs. Juste pour vous donner un contexte sur la vitesse de l'application, notre description de l'application est plus de 50 mètres. Nous avons plus de 5 000 points, plus de 20 000 épargés. Il y a 7 secondes sur ma machine. Je vais vous donner une idée de la perte de l'application. Et je suis désolé pour ce côté de la salle. Je sais que je suis en train d'attendre ce côté de la salle et non de l'autre. J'espère que vous n'en avez pas. Donc la dernière chose que je peux vous demander, ce que j'ai installé avant que je commence cette session, c'est de la dépendance. C'est bien, mais comment sais-je que la dépendance que je dois installer pour que tout le secteur fonctionne correctement. Nous avons cette commande d'infocomment qui vous dit aussi que... C'est un bug qui a été fixé 3 jours plus tard, mais ce n'est pas une partie de la réalisation que j'ai utilisé. Je suis désolé, je suis désolé. Je peux juste faire ceci, d'abord. Il y a un point. Donc ici, ce que je vais vous dire, si vous n'avez pas de toutes les dépendances, vous n'avez pas besoin de toutes les dépendances. Si vous avez besoin de ça, vous avez besoin d'un point de vue. Vous avez besoin d'un point de vue pour un format de diverses solutions, pour des providers, etc. Donc, vous êtes bienvenus à utiliser les uns qu'on donne, mais si vous n'êtes pas heureux avec les uns qu'on donne, pour des raisons ou si vous avez d'autres besoins, vous pouvez l'exporter, je ne sais pas, ciboR, par exemple, si vous pouvez vous garantir leur propre application, et vous faire aimer ciboR-C1-2, aussi. Alors, maintenant le backstory. Et voilà que je vais créer un nouveau enjeu. Donc ici je vais dire Microsoft. client. Évidemment, c'est toujours mieux avec Copilot. Et ensuite je vais dire Microsoft Graph Client.me. parce que je sais que c'est sous l'écran de l'usage.tudo, ici, les listes. Et donc si vous n'avez pas envie de faire ça, c'est bien, mais tous les tests sont dans les listes, donc vous avez besoin d'un liste d'abord, pour que vous puissiez mettre les tests dans les listes. C'est juste une baguette pour mettre les tests. Et donc, ici, je vais juste faire « GET » ici. Si je veux la première liste dans les listes de listes, je sais que c'est assez meta, mais je suis capable d'indexer dans la collection ici. Et ensuite, la prochaine chose, si vous voulez créer un tasque, il y a un github, un co-pilot, donc ce n'est pas un sujet, ici, vous êtes presque bien, mais ça va être le titre, et si je veux créer un nouveau tasque, ce sera mon client, c'est le client.me, des listes, mais peut-être que vous devez les faire. C'est utile, comme le nombre de fois, que j'ai créé des clients restants, que j'ai créé des typos dans les RIS, et que le compiler et la compétition auto-compté m'ont aidé à éviter ce genre de choses. Pour moi, c'est juste mon but, à ce point. Le liste.i, « To do tasks», « Click guide », il y a un « Go ». C'est très bien, merci, un co-pilot, donc ce n'est pas une création, parce que l'AI est halluciné, mais c'est un tasque pour créer un tasque. On a vu que, dans quelques minutes, j'ai pu créer un tasque pour faire, juste par tenter mon recruit, et en utilisant les modèles qui sont déjà créés pour moi, et qui sont déjà disponibles pour moi, ici. C'est très bien. J'ai besoin de maître un tasque dans le « To do tasks» pour avoir un tasque, un match avec un autre. Donc, à l'aide du « Me typing Python », ce que je vais faire, ce que je vais faire ici, c'est que je vais « Cheat » de nouveau. On y va. Donc, ici, ce que je vais faire, je vais faire un « Basic » pour tous ici, et pour chaque « Pour Request » qui vient de la liste de « Pour Request » j'ai créé un nouveau tasque en utilisant les services de l'AI des clients que nous avons vu avant. Avant, je peux faire ça. Je vais fixer le « Indent » et je vais faire le « Python » pour que le « Nothing» soit correctement configuré. Je ne vais pas faire ça tout de suite. Je vais faire ça pour un second. Quand vous n'utilisez pas la langue très souvent. Je ne vais pas avoir besoin de ça. Je ne vais pas avoir besoin de ça. Oui. Je ne sais pas. On y va. Et donc, la dernière chose que vous avez observé est que pour chaque client, je n'ai pas passé le nom ici mais je voulais voir l'exemple très rapidement et vous montrer comment vous pouvez faire les « Pour Request » très rapidement. Mais bien sûr, nous avons besoin d'un « Pour Request » qui est l'authentication. Merci beaucoup. C'est le plus difficile pour tout le développeur d'aujourd'hui. Pour Microsoft Graph, c'est évidemment très facile. Et la raison derrière c'est parce que nous avons un professeur d'authentication qui est prêt à aller et qui est prêt à utiliser pour vous. Je vais me fixer mon indent again. Je ne sais pas pourquoi c'est chiant à moi. Et vous verrez quelques objets ici. La première c'est le « Device Code Credential » Si vous n'avez pas le « Device Code Flow » c'est comme quand vous commencez un YouTube ou un Spotify sur la télé. Il vous dit que ici c'est votre i. Là il y a un code. Dépendez sur votre téléphone et votre i. C'est très pratique pour l'application console ou des devices qui n'ont pas des keyboards, ou un bon moyen d'input d'informations. En ce cas, « Device Code Credential » vient de l'identité Azure qui est la libraire mantaine par nos amis en Azure. C'est partie de Microsoft pour ceux qui n'ont pas parlé de ça. Je passe ça à un provider d'authentication qu'on mantient à notre équipe. Je passe ça à un adaptateur de request et je passe le tout à mon client. Il est configuré avec tout de l'authentication, de sérélisation, de sérélisation et de beaucoup d'autres choses. Il y a un « Rich-Y Handling » un « Compression Handling » un « Redirection Handling » et je vais faire la même chose pour « GitHub » ici. Sorry, je vais faire ça. « The same logic applies. Here, I have messed up my indent again. There we go, it's pretty now. But again, the same idea applies. I handcrafted this morning a « Device Code Flow Provider for GitHub » qui authenticate against GitHub and that's going to do the device code flow. I'm going to the request adapter and I'm passing this to the GitHub client so the client can use all the configuration it needs to make all the request I need to make. Last thing because this is a demo and no demo will be complete without bugging the demo. Just let me fix that, pretend you're not seeing what I'm doing right now. I just need to do this, that we have created a bug. We'll fix it by next week, I promise. I'm doing that. So now we should be able to see if it runs and works properly. So again, to show you that I'm not cheating here for once you can see that there are no tasks here so far, we can refresh this thing if you don't believe me. And we're going to go run the console application that I just created. Ooh, it doesn't sound... I shouldn't invent the ground slide but it's very fast and it should not be but it's working. Thank you so much. I would never have been able to figure that out in two minutes time. Thank you so much. Yeah, exactly. So again, a device code flow. This is the form I'm using to make that demonstration but we support any kind of authentication method format authentication flow and so on and so forth. So I'm going to go through Github login device here, page.code Yes, I accept all for this thing because everything is MFA these days I'm going to go through the MFA here. OK. There we go. So now I'm authenticating against Github my application can access Github information and I'm going to do the exact same thing with Microsoft Graph here because it's a different identity provider. So again Microsoft.com slide device login paste the code select the account say yes it's fine and there we go, I'm authenticated against Microsoft Graph. And now here if we go back we can see that my application form two pull requests and created two tasks they should be here I set a couple of things here I have a link to open the pull request right away in Github I have a due date I have a title, I could have a new number of things since the rest API you can set whatever fields you want to set and that's it. So I'll just jump back to the slides really quickly and then I'll hand over the questions and that's not going to display properly for the people that are online we do that there we go yeah it's good awesome thank you very much so let's talk about the roadmap for really quick so right now what we have is a CLI as a general identity we can use that tool it's supported, we will help you if you have issues and go back to it and as part of this GA we currently have two languages that are stable one which is C sharp of course and the other one being Go we're working really hard to make Python, PHP, Java it will be CLI and I'm forgetting the languages other languages are stable as soon as possible as soon as possible Python and PHP probably being the next two that are going to be stable really really really soon if we forget about the bugs that I just found preparing this demonstration we have one idea with VS Code but it's in preview it's the same engine under the covers it's just the experience within VS Code but the engine itself it's the same engine just out of curiosity who uses VS Code to do Python today okay who uses one of many JetBrains products ok please not that plus plus ok, that's fine what else do you use people? vr ok, there you see ok but not the one you get from the terminal so you add a you add a Python extension to it so it's conscious about Python ok because my experience with VI is when I have a headless server I go to the VI and then it's like how do I quit this thing again but I'm not as well versed into VI and Emax as you guys saw so VI, Emax what? Kate I didn't even know this one anything else? spider? yeah, ok ok, great, thank you so much for sharing that we're working to develop our partnerships with the community if you're interested to try to tell us why it works, why it doesn't work if you're very interested in contributing please do we started building public documentation if you try to get out when you try to get out the public documentation is probably going to be the biggest gap because we have a gap in documentation we will not be Microsoft Overlight right we're looking to add more search providers so you can we have a model where we have different search providers one search is on github so if you host an API description on github it's available for anybody to use in Kyoto we also support for APIs Guru do you have any kind of API registry internally like something where the whole company says here's all the APIs we have in the company do you have any kind of API registry none at all ok and later on we will experiment with things like LMS and text generation so the code that I was typing you don't even need to type it anymore it generates it for you automatically because it reads your mind and other things like that here's our public docs as you can see it's brand new it's lacking a few things but it's here that's it thank you very much for listening to me tonight don't know if you have any questions we have a couple of minutes but thank you so much and I hope you had a great time during this presentation thank you yes so the question is for people that are online how does it work for debugging and keep in mind that I only have a couple of minutes but because we're following the semantic the segmentation of the API for example if we look at this here for github you can you can navigate into the code and you can navigate all your way down if you want to say this is not where I wanted to go if you go all the way here for example to what we call a request executor you'll see that it's building a request based on our abstractions here at some point and then when you get there you'll see that it's gonna call the request adapter here and if you navigate into that you'll be able to explore our code and see how we actually make the request under the covers and what's happening under the covers so you're able to step through all the code and understand on the generated part how well does it map to the description and to what the API provider is definitely and on the implementation side is the code that my colleague a good for his craft and you can call us out if it's correct and full request are more welcome thank you any other questions? no questions online? no questions online my new one for me do you support big bucket? as a so the question is do you support big bucket I'm expecting this is to store open API descriptions on search for them yes I mean if I want to have full request for my big bucket big pool can I use CO2 yeah ok so the question is if the full request were in big bucket instead could have built the same application I don't know big bucket that well I'm expecting that they have a REST API and I'm suspecting they have an open API description for it if yes yes we can use CO2 to generate the same thing would generate for Github and then we can implement the code if no call them out and say hey why don't you have a REST API and why don't you have an open API description but yeah awesome last chance to ask a question voice alright thank you very much everyone thank you for coming and have a great coming ah ah vous voulez faire une revue vas-y vas-y oui c'est bon on va être bref on sait que tout le monde soif et qui est tard et on va être bref vas-y je vais pas aimer en français merci tout le monde pour qu'elle est là et n'oubliez pas qu'on s'en va trois bras de parce qu'on a tellement soif bon bonsoir et tout le monde je te laisse parler en anglais c'est bien bref ok donc oui on va faire 3 bras si vous voulez des refreshments merci encore Mikosa pour nous merci encore FGNR pour nous notre virtual happy hour on va commencer ça en juste un peu et euh remember Python 3.12 est relis sur monday et il n'y a pas beaucoup de recommandations françaises donc on va avoir des translators si on a des gens violeurs on va avoir juste FGNR me ou duk et on va faire ça non non non je vais continuer je vais continuer et FGNR j'ai pas broken mais c'est bien c'est pas pour moi on va faire un group picture si vous ne voulez pas faire un group picture c'est bien, vous pouvez aller ici si vous voulez être part de la group picture on peut faire un group picture on peut faire un group picture parce qu'on a beaucoup de combats et c'est bien merci tout le monde on va commencer la virtual happy hour et c'est ça see you next month merci euh non merci