pax_global_header                                                                                   0000666 0000000 0000000 00000000064 15070515525 0014517 g                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        52 comment=c7b9b1c68103eeb8dd4a4664e83551197dfb1074
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            litestar-2.18.0/                                                                                    0000775 0000000 0000000 00000000000 15070515525 0013436 5                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        litestar-2.18.0/.all-contributorsrc                                                                 0000664 0000000 0000000 00000147045 15070515525 0017302 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        {
  "files": [
    "README.md"
  ],
  "imageSize": 100,
  "commit": false,
  "contributors": [
    {
      "login": "Goldziher",
      "name": "Na'aman Hirschfeld",
      "avatar_url": "https://avatars.githubusercontent.com/u/30733348?v=4",
      "profile": "https://www.linkedin.com/in/nhirschfeld/",
      "contributions": [
        "maintenance",
        "code",
        "doc",
        "test",
        "ideas",
        "example",
        "bug"
      ]
    },
    {
      "login": "peterschutt",
      "name": "Peter Schutt",
      "avatar_url": "https://avatars.githubusercontent.com/u/20659309?v=4",
      "profile": "https://github.com/peterschutt",
      "contributions": [
        "maintenance",
        "code",
        "doc",
        "test",
        "ideas",
        "example",
        "bug"
      ]
    },
    {
      "login": "ashwinvin",
      "name": "Ashwin Vinod",
      "avatar_url": "https://avatars.githubusercontent.com/u/38067089?v=4",
      "profile": "https://ashwinvin.github.io",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "dkress59",
      "name": "Damian",
      "avatar_url": "https://avatars.githubusercontent.com/u/28515387?v=4",
      "profile": "http://www.damiankress.de",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "vincentsarago",
      "name": "Vincent Sarago",
      "avatar_url": "https://avatars.githubusercontent.com/u/10407788?v=4",
      "profile": "https://remotepixel.ca",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "JonasKs",
      "name": "Jonas Krüger Svensson",
      "avatar_url": "https://avatars.githubusercontent.com/u/5310116?v=4",
      "profile": "https://hotfix.guru",
      "contributions": [
        "platform"
      ]
    },
    {
      "login": "sondrelg",
      "name": "Sondre Lillebø Gundersen",
      "avatar_url": "https://avatars.githubusercontent.com/u/25310870?v=4",
      "profile": "https://github.com/sondrelg",
      "contributions": [
        "platform"
      ]
    },
    {
      "login": "vrslev",
      "name": "Lev",
      "avatar_url": "https://avatars.githubusercontent.com/u/75225148?v=4",
      "profile": "https://github.com/vrslev",
      "contributions": [
        "code",
        "ideas"
      ]
    },
    {
      "login": "timwedde",
      "name": "Tim Wedde",
      "avatar_url": "https://avatars.githubusercontent.com/u/20231751?v=4",
      "profile": "https://github.com/timwedde",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "tclasen",
      "name": "Tory Clasen",
      "avatar_url": "https://avatars.githubusercontent.com/u/11999013?v=4",
      "profile": "https://github.com/tclasen",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Bobronium",
      "name": "Arseny Boykov",
      "avatar_url": "https://avatars.githubusercontent.com/u/36469655?v=4",
      "profile": "http://t.me/Bobronium",
      "contributions": [
        "code",
        "ideas"
      ]
    },
    {
      "login": "yudjinn",
      "name": "Jacob Rodgers",
      "avatar_url": "https://avatars.githubusercontent.com/u/7493084?v=4",
      "profile": "https://github.com/yudjinn",
      "contributions": [
        "example"
      ]
    },
    {
      "login": "danesolberg",
      "name": "Dane Solberg",
      "avatar_url": "https://avatars.githubusercontent.com/u/25882507?v=4",
      "profile": "https://github.com/danesolberg",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "madlad33",
      "name": "madlad33",
      "avatar_url": "https://avatars.githubusercontent.com/u/54079440?v=4",
      "profile": "https://github.com/madlad33",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Butch78",
      "name": "Matthew Aylward ",
      "avatar_url": "https://avatars.githubusercontent.com/u/19205392?v=4",
      "profile": "http://matthewtyleraylward.com",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Joko013",
      "name": "Jan Klima",
      "avatar_url": "https://avatars.githubusercontent.com/u/30841710?v=4",
      "profile": "https://github.com/Joko013",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "i404788",
      "name": "C2D",
      "avatar_url": "https://avatars.githubusercontent.com/u/50617709?v=4",
      "profile": "https://github.com/i404788",
      "contributions": [
        "test"
      ]
    },
    {
      "login": "to-ph",
      "name": "to-ph",
      "avatar_url": "https://avatars.githubusercontent.com/u/84818322?v=4",
      "profile": "https://github.com/to-ph",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "imbev",
      "name": "imbev",
      "avatar_url": "https://avatars.githubusercontent.com/u/105524473?v=4",
      "profile": "https://imbev.gitlab.io/site",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "185504a9",
      "name": "cătălin",
      "avatar_url": "https://avatars.githubusercontent.com/u/45485069?v=4",
      "profile": "https://git.roboces.dev/catalin",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Seon82",
      "name": "Seon82",
      "avatar_url": "https://avatars.githubusercontent.com/u/46298009?v=4",
      "profile": "https://github.com/Seon82",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "slavugan",
      "name": "Slava",
      "avatar_url": "https://avatars.githubusercontent.com/u/8457612?v=4",
      "profile": "https://github.com/slavugan",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Harry-Lees",
      "name": "Harry",
      "avatar_url": "https://avatars.githubusercontent.com/u/52263746?v=4",
      "profile": "https://github.com/Harry-Lees",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "cofin",
      "name": "Cody Fincher",
      "avatar_url": "https://avatars.githubusercontent.com/u/204685?v=4",
      "profile": "https://github.com/cofin",
      "contributions": [
        "maintenance",
        "code",
        "doc",
        "test",
        "ideas",
        "example",
        "bug"
      ]
    },
    {
      "login": "cclauss",
      "name": "Christian Clauss",
      "avatar_url": "https://avatars.githubusercontent.com/u/3709715?v=4",
      "profile": "https://www.patreon.com/cclauss",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "josepdaniel",
      "name": "josepdaniel",
      "avatar_url": "https://avatars.githubusercontent.com/u/36941460?v=4",
      "profile": "https://github.com/josepdaniel",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "devtud",
      "name": "devtud",
      "avatar_url": "https://avatars.githubusercontent.com/u/6808024?v=4",
      "profile": "https://github.com/devtud",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "nramos0",
      "name": "Nicholas Ramos",
      "avatar_url": "https://avatars.githubusercontent.com/u/35410160?v=4",
      "profile": "https://github.com/nramos0",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "seladb",
      "name": "seladb",
      "avatar_url": "https://avatars.githubusercontent.com/u/9059541?v=4",
      "profile": "https://twitter.com/seladb",
      "contributions": [
        "doc",
        "code"
      ]
    },
    {
      "login": "aedify-swi",
      "name": "Simon Wienhöfer",
      "avatar_url": "https://avatars.githubusercontent.com/u/66629131?v=4",
      "profile": "https://github.com/aedify-swi",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mobiusxs",
      "name": "MobiusXS",
      "avatar_url": "https://avatars.githubusercontent.com/u/57055149?v=4",
      "profile": "https://github.com/mobiusxs",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Aidan-Simard",
      "name": "Aidan Simard",
      "avatar_url": "https://avatars.githubusercontent.com/u/73361895?v=4",
      "profile": "http://aidansimard.dev",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "waweber",
      "name": "wweber",
      "avatar_url": "https://avatars.githubusercontent.com/u/714224?v=4",
      "profile": "https://github.com/waweber",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "samuelcolvin",
      "name": "Samuel Colvin",
      "avatar_url": "https://avatars.githubusercontent.com/u/4039449?v=4",
      "profile": "http://scolvin.com",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "toudi",
      "name": "Mateusz Mikołajczyk",
      "avatar_url": "https://avatars.githubusercontent.com/u/81148?v=4",
      "profile": "https://github.com/toudi",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Alex-CodeLab",
      "name": "Alex ",
      "avatar_url": "https://avatars.githubusercontent.com/u/1678423?v=4",
      "profile": "https://github.com/Alex-CodeLab",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "odiseo0",
      "name": "Odiseo",
      "avatar_url": "https://avatars.githubusercontent.com/u/87550035?v=4",
      "profile": "https://github.com/odiseo0",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "ingjavierpinilla",
      "name": "Javier  Pinilla",
      "avatar_url": "https://avatars.githubusercontent.com/u/36714646?v=4",
      "profile": "https://github.com/ingjavierpinilla",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Chaoyingz",
      "name": "Chaoying",
      "avatar_url": "https://avatars.githubusercontent.com/u/32626585?v=4",
      "profile": "https://github.com/Chaoyingz",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "infohash",
      "name": "infohash",
      "avatar_url": "https://avatars.githubusercontent.com/u/46137868?v=4",
      "profile": "https://github.com/infohash",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "john-ingles",
      "name": "John Ingles",
      "avatar_url": "https://avatars.githubusercontent.com/u/35442886?v=4",
      "profile": "https://www.linkedin.com/in/john-ingles/",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "h0rn3t",
      "name": "Eugene",
      "avatar_url": "https://avatars.githubusercontent.com/u/1213719?v=4",
      "profile": "https://github.com/h0rn3t",
      "contributions": [
        "test",
        "code"
      ]
    },
    {
      "login": "jonadaly",
      "name": "Jon Daly",
      "avatar_url": "https://avatars.githubusercontent.com/u/26462826?v=4",
      "profile": "https://github.com/jonadaly",
      "contributions": [
        "doc",
        "code"
      ]
    },
    {
      "login": "Harshal6927",
      "name": "Harshal Laheri",
      "avatar_url": "https://avatars.githubusercontent.com/u/73422191?v=4",
      "profile": "https://harshallaheri.me/",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "sorasful",
      "name": "Téva KRIEF",
      "avatar_url": "https://avatars.githubusercontent.com/u/32820423?v=4",
      "profile": "https://github.com/sorasful",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "jtraub",
      "name": "Konstantin Mikhailov",
      "avatar_url": "https://avatars.githubusercontent.com/u/153191?v=4",
      "profile": "https://github.com/jtraub",
      "contributions": [
        "maintenance",
        "code",
        "doc",
        "test",
        "ideas",
        "example",
        "bug"
      ]
    },
    {
      "login": "devmitch",
      "name": "Mitchell Henry",
      "avatar_url": "https://avatars.githubusercontent.com/u/17354727?v=4",
      "profile": "http://linkedin.com/in/mitchell-henry334/",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "chbndrhnns",
      "name": "chbndrhnns",
      "avatar_url": "https://avatars.githubusercontent.com/u/7534547?v=4",
      "profile": "https://github.com/chbndrhnns",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "nielsvanhooy",
      "name": "nielsvanhooy",
      "avatar_url": "https://avatars.githubusercontent.com/u/40770348?v=4",
      "profile": "https://github.com/nielsvanhooy",
      "contributions": [
        "code",
        "bug",
        "test"
      ]
    },
    {
      "login": "provinzkraut",
      "name": "provinzkraut",
      "avatar_url": "https://avatars.githubusercontent.com/u/25355197?v=4",
      "profile": "https://github.com/provinzkraut",
      "contributions": [
        "maintenance",
        "code",
        "doc",
        "test",
        "ideas",
        "example",
        "bug",
        "design"
      ]
    },
    {
      "login": "jab",
      "name": "Joshua Bronson",
      "avatar_url": "https://avatars.githubusercontent.com/u/64992?v=4",
      "profile": "https://github.com/jab",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "ReznikovRoman",
      "name": "Roman Reznikov",
      "avatar_url": "https://avatars.githubusercontent.com/u/44291988?v=4",
      "profile": "http://linkedin.com/in/roman-reznikov",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "mookrs",
      "name": "mookrs",
      "avatar_url": "https://avatars.githubusercontent.com/u/985439?v=4",
      "profile": "http://mookrs.com",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "mivade",
      "name": "Mike DePalatis",
      "avatar_url": "https://avatars.githubusercontent.com/u/2805515?v=4",
      "profile": "http://mike.depalatis.net",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "pemocarlo",
      "name": "Carlos Alberto Pérez-Molano",
      "avatar_url": "https://avatars.githubusercontent.com/u/7297323?v=4",
      "profile": "https://github.com/pemocarlo",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "ThinksFast",
      "name": "ThinksFast",
      "avatar_url": "https://avatars.githubusercontent.com/u/114229148?v=4",
      "profile": "https://www.bestcryptocodes.com",
      "contributions": [
        "test",
        "doc"
      ]
    },
    {
      "login": "ottermata",
      "name": "Christopher Krause",
      "avatar_url": "https://avatars.githubusercontent.com/u/9451844?v=4",
      "profile": "https://github.com/ottermata",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "smithk86",
      "name": "Kyle Smith",
      "avatar_url": "https://avatars.githubusercontent.com/u/1161424?v=4",
      "profile": "http://www.kylesmith.me",
      "contributions": [
        "code",
        "doc",
        "bug"
      ]
    },
    {
      "login": "scott2b",
      "name": "Scott Bradley",
      "avatar_url": "https://avatars.githubusercontent.com/u/307713?v=4",
      "profile": "https://github.com/scott2b",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "srikanthccv",
      "name": "Srikanth Chekuri",
      "avatar_url": "https://avatars.githubusercontent.com/u/22846633?v=4",
      "profile": "https://www.linkedin.com/in/srikanthccv/",
      "contributions": [
        "test",
        "doc"
      ]
    },
    {
      "login": "LonelyVikingMichael",
      "name": "Michael Bosch",
      "avatar_url": "https://avatars.githubusercontent.com/u/78952809?v=4",
      "profile": "https://lonelyviking.com",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "sssssss340",
      "name": "sssssss340",
      "avatar_url": "https://avatars.githubusercontent.com/u/8406195?v=4",
      "profile": "https://github.com/sssssss340",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "ste-pool",
      "name": "ste-pool",
      "avatar_url": "https://avatars.githubusercontent.com/u/17198460?v=4",
      "profile": "https://github.com/ste-pool",
      "contributions": [
        "code",
        "infra"
      ]
    },
    {
      "login": "Alc-Alc",
      "name": "Alc-Alc",
      "avatar_url": "https://avatars.githubusercontent.com/u/45509143?v=4",
      "profile": "https://github.com/Alc-Alc",
      "contributions": [
        "doc",
        "code",
        "test",
        "infra"
      ]
    },
    {
      "login": "asomethings",
      "name": "asomethings",
      "avatar_url": "https://avatars.githubusercontent.com/u/16171942?v=4",
      "profile": "http://asomethings.com",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "garburator",
      "name": "Garry Bullock",
      "avatar_url": "https://avatars.githubusercontent.com/u/14207857?v=4",
      "profile": "https://github.com/garburator",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "NiclasHaderer",
      "name": "Niclas Haderer",
      "avatar_url": "https://avatars.githubusercontent.com/u/109728711?v=4",
      "profile": "https://github.com/NiclasHaderer",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "dialvarezs",
      "name": "Diego Alvarez",
      "avatar_url": "https://avatars.githubusercontent.com/u/13831919?v=4",
      "profile": "https://github.com/dialvarezs",
      "contributions": [
        "doc",
        "code",
        "test"
      ]
    },
    {
      "login": "rgajason",
      "name": "Jason Nance",
      "avatar_url": "https://avatars.githubusercontent.com/u/51208317?v=4",
      "profile": "https://www.rgare.com",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "spikenn",
      "name": "Igor Kapadze",
      "avatar_url": "https://avatars.githubusercontent.com/u/32995595?v=4",
      "profile": "https://github.com/spikenn",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "Jarmos-san",
      "name": "Somraj Saha",
      "avatar_url": "https://avatars.githubusercontent.com/u/31373860?v=4",
      "profile": "https://jarmos.vercel.app",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "maggias",
      "name": "Magnús Ágúst Skúlason",
      "avatar_url": "https://avatars.githubusercontent.com/u/11139514?v=4",
      "profile": "http://skulason.me",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "pomma89",
      "name": "Alessio Parma",
      "avatar_url": "https://avatars.githubusercontent.com/u/4697032?v=4",
      "profile": "https://alessioparma.xyz/",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "Lugoues",
      "name": "Peter Brunner",
      "avatar_url": "https://avatars.githubusercontent.com/u/372610?v=4",
      "profile": "https://github.com/Lugoues",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "JacobCoffee",
      "name": "Jacob Coffee",
      "avatar_url": "https://avatars.githubusercontent.com/u/45884264?v=4",
      "profile": "https://scriptr.dev/",
      "contributions": [
        "doc",
        "code",
        "test",
        "infra",
        "ideas",
        "maintenance",
        "business",
        "design"
      ]
    },
    {
      "login": "Gamazic",
      "name": "Gamazic",
      "avatar_url": "https://avatars.githubusercontent.com/u/33692402?v=4",
      "profile": "https://github.com/Gamazic",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "kareemmahlees",
      "name": "Kareem Mahlees",
      "avatar_url": "https://avatars.githubusercontent.com/u/89863279?v=4",
      "profile": "https://github.com/kareemmahlees",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "abdulhaq-e",
      "name": "Abdulhaq Emhemmed",
      "avatar_url": "https://avatars.githubusercontent.com/u/2532125?v=4",
      "profile": "https://github.com/abdulhaq-e",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "jenish2014",
      "name": "Jenish",
      "avatar_url": "https://avatars.githubusercontent.com/u/9599888?v=4",
      "profile": "https://github.com/jenish2014",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "chris-telemetry",
      "name": "chris-telemetry",
      "avatar_url": "https://avatars.githubusercontent.com/u/78052999?v=4",
      "profile": "https://github.com/chris-telemetry",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "WardPearce",
      "name": "Ward",
      "avatar_url": "https://avatars.githubusercontent.com/u/27844174?v=4",
      "profile": "http://wardpearce.com",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "knowsuchagency",
      "name": "Stephan Fitzpatrick",
      "avatar_url": "https://avatars.githubusercontent.com/u/11974795?v=4",
      "profile": "https://knowsuchagency.com",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "ekeric13",
      "name": "Eric Kennedy",
      "avatar_url": "https://avatars.githubusercontent.com/u/6489651?v=4",
      "profile": "https://codepen.io/ekeric13/",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "wassafshahzad",
      "name": "wassaf shahzad",
      "avatar_url": "https://avatars.githubusercontent.com/u/25094157?v=4",
      "profile": "https://github.com/wassafshahzad",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "nilsso",
      "name": "Nils Olsson",
      "avatar_url": "https://avatars.githubusercontent.com/u/567181?v=4",
      "profile": "http://nilsso.github.io",
      "contributions": [
        "code",
        "bug"
      ]
    },
    {
      "login": "Nadock",
      "name": "Riley Chase",
      "avatar_url": "https://avatars.githubusercontent.com/u/1491530?v=4",
      "profile": "http://rileychase.net",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "onerandomusername",
      "name": "arl",
      "avatar_url": "https://avatars.githubusercontent.com/u/71233171?v=4",
      "profile": "https://gh.arielle.codes",
      "contributions": [
        "maintenance"
      ]
    },
    {
      "login": "Galdanwing",
      "name": "Antoine van der Horst",
      "avatar_url": "https://avatars.githubusercontent.com/u/29492757?v=4",
      "profile": "https://github.com/Galdanwing",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "zoni",
      "name": "Nick Groenen",
      "avatar_url": "https://avatars.githubusercontent.com/u/145285?v=4",
      "profile": "https://nick.groenen.me",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "giorgiovilardo",
      "name": "Giorgio Vilardo",
      "avatar_url": "https://avatars.githubusercontent.com/u/56472600?v=4",
      "profile": "https://github.com/giorgiovilardo",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "bollwyvl",
      "name": "Nicholas Bollweg",
      "avatar_url": "https://avatars.githubusercontent.com/u/45380?v=4",
      "profile": "https://github.com/bollwyvl",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "tompin82",
      "name": "Tomas Jonsson",
      "avatar_url": "https://avatars.githubusercontent.com/u/47041409?v=4",
      "profile": "https://github.com/tompin82",
      "contributions": [
        "test",
        "code"
      ]
    },
    {
      "login": "khiemdoan",
      "name": "Khiem Doan",
      "avatar_url": "https://avatars.githubusercontent.com/u/15646249?v=4",
      "profile": "https://www.linkedin.com/in/khiem-doan/",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "kedod",
      "name": "kedod",
      "avatar_url": "https://avatars.githubusercontent.com/u/35638715?v=4",
      "profile": "https://github.com/kedod",
      "contributions": [
        "doc",
        "code",
        "test"
      ]
    },
    {
      "login": "sonpro1296",
      "name": "sonpro1296",
      "avatar_url": "https://avatars.githubusercontent.com/u/17319142?v=4",
      "profile": "https://github.com/sonpro1296",
      "contributions": [
        "code",
        "test",
        "infra",
        "doc"
      ]
    },
    {
      "login": "patrickarmengol",
      "name": "Patrick Armengol",
      "avatar_url": "https://avatars.githubusercontent.com/u/42473149?v=4",
      "profile": "https://patrickarmengol.com",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "SanderWegter",
      "name": "Sander",
      "avatar_url": "https://avatars.githubusercontent.com/u/7465799?v=4",
      "profile": "https://sanderwegter.nl",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "erhuabushuo",
      "name": "疯人院主任",
      "avatar_url": "https://avatars.githubusercontent.com/u/1642364?v=4",
      "profile": "https://github.com/erhuabushuo",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "aviral-nayya",
      "name": "aviral-nayya",
      "avatar_url": "https://avatars.githubusercontent.com/u/121891493?v=4",
      "profile": "https://github.com/aviral-nayya",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "whiskeyriver",
      "name": "whiskeyriver",
      "avatar_url": "https://avatars.githubusercontent.com/u/162092?v=4",
      "profile": "https://github.com/whiskeyriver",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "v3ss0n",
      "name": "Phyo Arkar Lwin",
      "avatar_url": "https://avatars.githubusercontent.com/u/419606?v=4",
      "profile": "https://hexcode.tech",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "MatthewNewland",
      "name": "MatthewNewland",
      "avatar_url": "https://avatars.githubusercontent.com/u/9618670?v=4",
      "profile": "https://github.com/MatthewNewland",
      "contributions": [
        "bug",
        "code",
        "test"
      ]
    },
    {
      "login": "vtarchon",
      "name": "Tom Kuo",
      "avatar_url": "https://avatars.githubusercontent.com/u/1598170?v=4",
      "profile": "https://github.com/vtarchon",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "LeckerenSirupwaffeln",
      "name": "LeckerenSirupwaffeln",
      "avatar_url": "https://avatars.githubusercontent.com/u/83568015?v=4",
      "profile": "https://github.com/LeckerenSirupwaffeln",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "eldano1995",
      "name": "Daniel González Fernández",
      "avatar_url": "https://avatars.githubusercontent.com/u/24553679?v=4",
      "profile": "https://github.com/eldano1995",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "01EK98",
      "name": "01EK98",
      "avatar_url": "https://avatars.githubusercontent.com/u/101988390?v=4",
      "profile": "https://github.com/01EK98",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "sarbor",
      "name": "Sarbo Roy",
      "avatar_url": "https://avatars.githubusercontent.com/u/15257226?v=4",
      "profile": "https://github.com/sarbor",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "rseeley",
      "name": "Ryan Seeley",
      "avatar_url": "https://avatars.githubusercontent.com/u/5397221?v=4",
      "profile": "https://github.com/rseeley",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "ctrl-Felix",
      "name": "Felix",
      "avatar_url": "https://avatars.githubusercontent.com/u/62290842?v=4",
      "profile": "https://github.com/ctrl-Felix",
      "contributions": [
        "doc",
        "bug"
      ]
    },
    {
      "login": "gsakkis",
      "name": "George Sakkis",
      "avatar_url": "https://avatars.githubusercontent.com/u/291289?v=4",
      "profile": "https://www.linkedin.com/in/gsakkis",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "floxay",
      "name": "Huba Tuba",
      "avatar_url": "https://avatars.githubusercontent.com/u/57007485?v=4",
      "profile": "https://github.com/floxay",
      "contributions": [
        "doc",
        "code",
        "test"
      ]
    },
    {
      "login": "sfermigier",
      "name": "Stefane Fermigier",
      "avatar_url": "https://avatars.githubusercontent.com/u/271079?v=4",
      "profile": "http://fermigier.com/",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "r4gesingh47",
      "name": "r4ge",
      "avatar_url": "https://avatars.githubusercontent.com/u/71139938?v=4",
      "profile": "https://github.com/r4gesingh47",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "jaykv",
      "name": "Jay",
      "avatar_url": "https://avatars.githubusercontent.com/u/18240054?v=4",
      "profile": "https://github.com/jaykv",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "sinisaos",
      "name": "sinisaos",
      "avatar_url": "https://avatars.githubusercontent.com/u/30960668?v=4",
      "profile": "https://github.com/sinisaos",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "Tsdevendra1",
      "name": "Tharuka Devendra",
      "avatar_url": "https://avatars.githubusercontent.com/u/38055748?v=4",
      "profile": "https://github.com/Tsdevendra1",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "euri10",
      "name": "euri10",
      "avatar_url": "https://avatars.githubusercontent.com/u/1104190?v=4",
      "profile": "https://github.com/euri10",
      "contributions": [
        "code",
        "doc",
        "bug"
      ]
    },
    {
      "login": "su-shubham",
      "name": "Shubham",
      "avatar_url": "https://avatars.githubusercontent.com/u/75021117?v=4",
      "profile": "https://github.com/su-shubham",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "erik-hasse",
      "name": "Erik Hasse",
      "avatar_url": "https://avatars.githubusercontent.com/u/37126755?v=4",
      "profile": "https://www.linkedin.com/in/erik-hasse",
      "contributions": [
        "bug",
        "code"
      ]
    },
    {
      "login": "sobolevn",
      "name": "Nikita Sobolev",
      "avatar_url": "https://avatars.githubusercontent.com/u/4660275?v=4",
      "profile": "https://sobolevn.me",
      "contributions": [
        "infra",
        "code"
      ]
    },
    {
      "login": "lazyc97",
      "name": "Nguyễn Hoàng Đức",
      "avatar_url": "https://avatars.githubusercontent.com/u/8538104?v=4",
      "profile": "https://github.com/lazyc97",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "RavanaBhrama",
      "name": "RavanaBhrama",
      "avatar_url": "https://avatars.githubusercontent.com/u/131459969?v=4",
      "profile": "https://github.com/RavanaBhrama",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "mj0nez",
      "name": "Marcel Johannesmann",
      "avatar_url": "https://avatars.githubusercontent.com/u/20128340?v=4",
      "profile": "https://github.com/mj0nez",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "therealzanfar",
      "name": "Matthew",
      "avatar_url": "https://avatars.githubusercontent.com/u/10294685?v=4",
      "profile": "http://zanfar.com/",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "Mattwmaster58",
      "name": "Mattwmaster58",
      "avatar_url": "https://avatars.githubusercontent.com/u/26337069?v=4",
      "profile": "https://github.com/Mattwmaster58",
      "contributions": [
        "bug",
        "code",
        "test"
      ]
    },
    {
      "login": "aorith",
      "name": "Manuel Sanchez Pinar",
      "avatar_url": "https://avatars.githubusercontent.com/u/5411704?v=4",
      "profile": "https://es.linkedin.com/in/manusp",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "juan-riveros",
      "name": "Juan Riveros",
      "avatar_url": "https://avatars.githubusercontent.com/u/1297567?v=4",
      "profile": "https://github.com/juan-riveros",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "davidbrochart",
      "name": "David Brochart",
      "avatar_url": "https://avatars.githubusercontent.com/u/4711805?v=4",
      "profile": "https://github.com/davidbrochart",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "sean-donoghue",
      "name": "Sean Donoghue",
      "avatar_url": "https://avatars.githubusercontent.com/u/64597271?v=4",
      "profile": "https://github.com/sean-donoghue",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "sykloid",
      "name": "P.C. Shyamshankar",
      "avatar_url": "https://avatars.githubusercontent.com/u/22753?v=4",
      "profile": "https://sykloid.org/",
      "contributions": [
        "bug",
        "code",
        "test"
      ]
    },
    {
      "login": "wevonosky",
      "name": "William Evonosky",
      "avatar_url": "https://avatars.githubusercontent.com/u/19598171?v=4",
      "profile": "https://github.com/wevonosky",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "geeshta",
      "name": "geeshta",
      "avatar_url": "https://avatars.githubusercontent.com/u/61031243?v=4",
      "profile": "https://github.com/geeshta",
      "contributions": [
        "doc",
        "code",
        "bug"
      ]
    },
    {
      "login": "RobertRosca",
      "name": "Robert Rosca",
      "avatar_url": "https://avatars.githubusercontent.com/u/32569096?v=4",
      "profile": "https://fosstodon.org/@robertrosca",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "syshenyu",
      "name": "DICE_Lab",
      "avatar_url": "https://avatars.githubusercontent.com/u/92897003?v=4",
      "profile": "https://github.com/syshenyu",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "lsanpablo",
      "name": "Luis San Pablo",
      "avatar_url": "https://avatars.githubusercontent.com/u/7145688?v=4",
      "profile": "https://github.com/lsanpablo",
      "contributions": [
        "code",
        "test",
        "doc"
      ]
    },
    {
      "login": "Lancetnik",
      "name": "Pastukhov Nikita",
      "avatar_url": "https://avatars.githubusercontent.com/u/44573917?v=4",
      "profile": "https://github.com/Lancetnik",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "ddxv",
      "name": "James O'Claire",
      "avatar_url": "https://avatars.githubusercontent.com/u/7601451?v=4",
      "profile": "http://jamesoclaire.com",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "pbaletkeman",
      "name": "Pete",
      "avatar_url": "https://avatars.githubusercontent.com/u/22402240?v=4",
      "profile": "https://github.com/pbaletkeman",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "heralight",
      "name": "Alexandre Richonnier",
      "avatar_url": "https://avatars.githubusercontent.com/u/534840?v=4",
      "profile": "http://www.hera.cc",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "betaboon",
      "name": "betaboon",
      "avatar_url": "https://avatars.githubusercontent.com/u/7346933?v=4",
      "profile": "https://github.com/betaboon",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "brakhane",
      "name": "Dennis Brakhane",
      "avatar_url": "https://avatars.githubusercontent.com/u/541637?v=4",
      "profile": "https://github.com/brakhane",
      "contributions": [
        "code",
        "bug"
      ]
    },
    {
      "login": "AgarwalPragy",
      "name": "Pragy Agarwal",
      "avatar_url": "https://avatars.githubusercontent.com/u/7423639?v=4",
      "profile": "https://mind.wiki",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "dybi",
      "name": "Piotr Dybowski",
      "avatar_url": "https://avatars.githubusercontent.com/u/36961162?v=4",
      "profile": "https://github.com/dybi",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "myslak71",
      "name": "Konrad Szczurek",
      "avatar_url": "https://avatars.githubusercontent.com/u/43068450?v=4",
      "profile": "https://github.com/myslak71",
      "contributions": [
        "doc",
        "test"
      ]
    },
    {
      "login": "orgarten",
      "name": "Orell Garten",
      "avatar_url": "https://avatars.githubusercontent.com/u/10799869?v=4",
      "profile": "https://github.com/orgarten",
      "contributions": [
        "code",
        "doc",
        "test"
      ]
    },
    {
      "login": "Kumzy",
      "name": "Julien",
      "avatar_url": "https://avatars.githubusercontent.com/u/5995441?v=4",
      "profile": "https://github.com/Kumzy",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "leejayhsu",
      "name": "Leejay Hsu",
      "avatar_url": "https://avatars.githubusercontent.com/u/37034741?v=4",
      "profile": "https://github.com/leejayhsu",
      "contributions": [
        "maintenance",
        "infra",
        "doc"
      ]
    },
    {
      "login": "mbeijen",
      "name": "Michiel W. Beijen",
      "avatar_url": "https://avatars.githubusercontent.com/u/659504?v=4",
      "profile": "https://x14.nl",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "baoliay2008",
      "name": "L. Bao",
      "avatar_url": "https://avatars.githubusercontent.com/u/13620348?v=4",
      "profile": "https://github.com/baoliay2008",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "jdglaser",
      "name": "Jarred Glaser",
      "avatar_url": "https://avatars.githubusercontent.com/u/32422167?v=4",
      "profile": "http://jarredglaser.com",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "hunterjsb",
      "name": "Hunter Boyd",
      "avatar_url": "https://avatars.githubusercontent.com/u/69213737?v=4",
      "profile": "https://github.com/hunterjsb",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "cesarmg1980",
      "name": "Cesar Giulietti",
      "avatar_url": "https://avatars.githubusercontent.com/u/38872121?v=4",
      "profile": "https://github.com/cesarmg1980",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "marcuslimdw",
      "name": "Marcus Lim",
      "avatar_url": "https://avatars.githubusercontent.com/u/42759889?v=4",
      "profile": "https://gitlab.com/marcuslimdw/",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "hzhou0",
      "name": "Henry Zhou",
      "avatar_url": "https://avatars.githubusercontent.com/u/43188301?v=4",
      "profile": "https://github.com/hzhou0",
      "contributions": [
        "bug",
        "code"
      ]
    },
    {
      "login": "WilliamStam",
      "name": "William Stam",
      "avatar_url": "https://avatars.githubusercontent.com/u/182800?v=4",
      "profile": "https://github.com/WilliamStam",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "andrewdoh",
      "name": "andrew do",
      "avatar_url": "https://avatars.githubusercontent.com/u/7662358?v=4",
      "profile": "https://github.com/andrewdoh",
      "contributions": [
        "code",
        "test",
        "doc"
      ]
    },
    {
      "login": "cbscsm",
      "name": "Boseong Choi",
      "avatar_url": "https://avatars.githubusercontent.com/u/31615733?v=4",
      "profile": "https://github.com/cbscsm",
      "contributions": [
        "code",
        "test"
      ]
    },
    {
      "login": "wer153",
      "name": "Kim Minki",
      "avatar_url": "https://avatars.githubusercontent.com/u/23370765?v=4",
      "profile": "https://github.com/wer153",
      "contributions": [
        "code",
        "doc"
      ]
    },
    {
      "login": "jseop-lim",
      "name": "Jeongseop Lim",
      "avatar_url": "https://avatars.githubusercontent.com/u/86508420?v=4",
      "profile": "https://velog.io/@azzurri21",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "FergusMok",
      "name": "FergusMok",
      "avatar_url": "https://avatars.githubusercontent.com/u/10182564?v=4",
      "profile": "https://github.com/FergusMok",
      "contributions": [
        "doc",
        "code",
        "test"
      ]
    },
    {
      "login": "manusinghal19",
      "name": "Manu Singhal",
      "avatar_url": "https://avatars.githubusercontent.com/u/8455587?v=4",
      "profile": "https://github.com/manusinghal19",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "jrycw",
      "name": "Jerry Wu",
      "avatar_url": "https://avatars.githubusercontent.com/u/67060418?v=4",
      "profile": "https://cv.ycwu.space",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "horo-fox",
      "name": "horo",
      "avatar_url": "https://avatars.githubusercontent.com/u/143025439?v=4",
      "profile": "https://github.com/horo-fox",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "rosstitmarsh",
      "name": "Ross Titmarsh",
      "avatar_url": "https://avatars.githubusercontent.com/u/23349806?v=4",
      "profile": "https://github.com/rosstitmarsh",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "korneevm",
      "name": "Mike Korneev",
      "avatar_url": "https://avatars.githubusercontent.com/u/743250?v=4",
      "profile": "https://github.com/korneevm",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "patrickneise",
      "name": "Patrick Neise",
      "avatar_url": "https://avatars.githubusercontent.com/u/6312074?v=4",
      "profile": "https://github.com/patrickneise",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "JeanArhancet",
      "name": "Jean Arhancet",
      "avatar_url": "https://avatars.githubusercontent.com/u/10811879?v=4",
      "profile": "https://github.com/JeanArhancet",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "betaprior",
      "name": "Leo Alekseyev",
      "avatar_url": "https://avatars.githubusercontent.com/u/338250?v=4",
      "profile": "http://dnquark.com",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "aranvir",
      "name": "aranvir",
      "avatar_url": "https://avatars.githubusercontent.com/u/75439739?v=4",
      "profile": "https://github.com/aranvir",
      "contributions": [
        "doc",
        "code",
        "test"
      ]
    },
    {
      "login": "bunny-therapist",
      "name": "bunny-therapist",
      "avatar_url": "https://avatars.githubusercontent.com/u/87039365?v=4",
      "profile": "https://github.com/bunny-therapist",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "benluo",
      "name": "Ben Luo",
      "avatar_url": "https://avatars.githubusercontent.com/u/70398?v=4",
      "profile": "http://www.benluo.cc",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "hugovk",
      "name": "Hugo van Kemenade",
      "avatar_url": "https://avatars.githubusercontent.com/u/1324225?v=4",
      "profile": "https://github.com/hugovk",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "error418",
      "name": "Michael Gerbig",
      "avatar_url": "https://avatars.githubusercontent.com/u/7716544?v=4",
      "profile": "https://error418.github.io",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "crisog",
      "name": "CrisOG",
      "avatar_url": "https://avatars.githubusercontent.com/u/40803711?v=4",
      "profile": "https://github.com/crisog",
      "contributions": [
        "bug",
        "code",
        "test"
      ]
    },
    {
      "login": "haryle",
      "name": "harryle",
      "avatar_url": "https://avatars.githubusercontent.com/u/64817481?v=4",
      "profile": "https://github.com/haryle",
      "contributions": [
        "code",
        "test"
      ]
    },
    {
      "login": "ubernostrum",
      "name": "James Bennett",
      "avatar_url": "https://avatars.githubusercontent.com/u/12384?v=4",
      "profile": "http://www.b-list.org/",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "sherbang",
      "name": "sherbang",
      "avatar_url": "https://avatars.githubusercontent.com/u/275015?v=4",
      "profile": "https://github.com/sherbang",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "carlsmedstad",
      "name": "Carl Smedstad",
      "avatar_url": "https://avatars.githubusercontent.com/u/6952324?v=4",
      "profile": "https://github.com/carlsmedstad",
      "contributions": [
        "test"
      ]
    },
    {
      "login": "maintain0404",
      "name": "Taein Min",
      "avatar_url": "https://avatars.githubusercontent.com/u/50428534?v=4",
      "profile": "https://github.com/maintain0404",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "wallseat",
      "name": "Stanislav Lyu.",
      "avatar_url": "https://avatars.githubusercontent.com/u/26143672?v=4",
      "profile": "https://github.com/wallseat",
      "contributions": [
        "bug"
      ]
    },
    {
      "login": "tibor-reiss",
      "name": "Tibor Reiss",
      "avatar_url": "https://avatars.githubusercontent.com/u/75096465?v=4",
      "profile": "https://github.com/tibor-reiss",
      "contributions": [
        "test",
        "doc",
        "code"
      ]
    },
    {
      "login": "0xE111",
      "name": "Alex",
      "avatar_url": "https://avatars.githubusercontent.com/u/11032969?v=4",
      "profile": "https://pogrom.dev",
      "contributions": [
        "bug",
        "code"
      ]
    },
    {
      "login": "JorenSix",
      "name": "Joren Six",
      "avatar_url": "https://avatars.githubusercontent.com/u/60453?v=4",
      "profile": "http://0110.be",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "jderrien",
      "name": "jderrien",
      "avatar_url": "https://avatars.githubusercontent.com/u/145396?v=4",
      "profile": "https://github.com/jderrien",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "PossiblePanda",
      "name": "PossiblePanda",
      "avatar_url": "https://avatars.githubusercontent.com/u/85448494?v=4",
      "profile": "https://possiblepanda.me",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "evstratbg",
      "name": "evstrat",
      "avatar_url": "https://avatars.githubusercontent.com/u/10176401?v=4",
      "profile": "https://github.com/evstratbg",
      "contributions": [
        "infra"
      ]
    },
    {
      "login": "eltociear",
      "name": "Ikko Eltociear Ashimine",
      "avatar_url": "https://avatars.githubusercontent.com/u/22633385?v=4",
      "profile": "https://speakerdeck.com/eltociear",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "taihim",
      "name": "Taimur Ibrahim",
      "avatar_url": "https://avatars.githubusercontent.com/u/13764071?v=4",
      "profile": "https://github.com/taihim",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "l-armstrong",
      "name": "l-armstrong",
      "avatar_url": "https://avatars.githubusercontent.com/u/43922258?v=4",
      "profile": "https://github.com/l-armstrong",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "Anu-cool-007",
      "name": "Anuranjan Srivastava",
      "avatar_url": "https://avatars.githubusercontent.com/u/16525919?v=4",
      "profile": "https://github.com/Anu-cool-007",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Zimzozaur",
      "name": "Simon Joseph",
      "avatar_url": "https://avatars.githubusercontent.com/u/106471045?v=4",
      "profile": "https://github.com/Zimzozaur",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "abelkm99",
      "name": "Abel Kidanemariam",
      "avatar_url": "https://avatars.githubusercontent.com/u/41730180?v=4",
      "profile": "https://github.com/abelkm99",
      "contributions": [
        "code",
        "test",
        "doc"
      ]
    },
    {
      "login": "trim21",
      "name": "Trim21",
      "avatar_url": "https://avatars.githubusercontent.com/u/13553903?v=4",
      "profile": "https://blog.trim21.me/",
      "contributions": [
        "code",
        "test"
      ]
    },
    {
      "login": "aarcex3",
      "name": "Agustin Arce",
      "avatar_url": "https://avatars.githubusercontent.com/u/59893355?v=4",
      "profile": "http://aarcex3.github.io",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "FarhanAliRaza",
      "name": "Farhan Ali Raza",
      "avatar_url": "https://avatars.githubusercontent.com/u/62690310?v=4",
      "profile": "https://github.com/FarhanAliRaza",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "pogopaule",
      "name": "Fabian",
      "avatar_url": "https://avatars.githubusercontent.com/u/576949?v=4",
      "profile": "https://github.com/pogopaule",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "mohammedbabelly20",
      "name": "Mohammed Babelly",
      "avatar_url": "https://avatars.githubusercontent.com/u/104768048?v=4",
      "profile": "https://github.com/mohammedbabelly20",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "charles-dyfis-net",
      "name": "Charles Duffy",
      "avatar_url": "https://avatars.githubusercontent.com/u/22370?v=4",
      "profile": "https://keybase.io/charlesdyfisnet",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "RenameMe1",
      "name": "Evgeny Demchenko",
      "avatar_url": "https://avatars.githubusercontent.com/u/165988121?v=4",
      "profile": "https://github.com/RenameMe1",
      "contributions": [
        "doc",
        "test"
      ]
    },
    {
      "login": "olzhasar",
      "name": "Olzhas Arystanov",
      "avatar_url": "https://avatars.githubusercontent.com/u/12471703?v=4",
      "profile": "https://olzhasar.com",
      "contributions": [
        "bug",
        "doc"
      ]
    },
    {
      "login": "vikigenius",
      "name": "Vikash",
      "avatar_url": "https://avatars.githubusercontent.com/u/12724810?v=4",
      "profile": "https://github.com/vikigenius",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "ftsartek",
      "name": "Jordan Russell",
      "avatar_url": "https://avatars.githubusercontent.com/u/20253317?v=4",
      "profile": "https://github.com/ftsartek",
      "contributions": [
        "doc",
        "test",
        "code"
      ]
    },
    {
      "login": "sloria",
      "name": "Steven Loria",
      "avatar_url": "https://avatars.githubusercontent.com/u/2379650?v=4",
      "profile": "https://stevenloria.com",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "oek1ng",
      "name": "oek1ng",
      "avatar_url": "https://avatars.githubusercontent.com/u/193062679?v=4",
      "profile": "https://github.com/oek1ng",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "Ada-lave",
      "name": "Vladislav",
      "avatar_url": "https://avatars.githubusercontent.com/u/113159483?v=4",
      "profile": "https://github.com/Ada-lave",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "eandersons",
      "name": "Edgars",
      "avatar_url": "https://avatars.githubusercontent.com/u/9976861?v=4",
      "profile": "https://gaitenis.id.lv",
      "contributions": [
        "doc"
      ]
    },
    {
      "login": "Jannchie",
      "name": "Jianqi Pan",
      "avatar_url": "https://avatars.githubusercontent.com/u/29743310?v=4",
      "profile": "https://jannchie.com",
      "contributions": [
        "code"
      ]
    },
    {
      "login": "PokkaKiyo",
      "name": "PokkaKiyo",
      "avatar_url": "https://avatars.githubusercontent.com/u/31039465?v=4",
      "profile": "https://github.com/PokkaKiyo",
      "contributions": [
        "test"
      ]
    },
    {
      "login": "s-aleshin",
      "name": "Sergei Aleshin",
      "avatar_url": "https://avatars.githubusercontent.com/u/66841202?v=4",
      "profile": "https://github.com/s-aleshin",
      "contributions": [
        "code"
      ]
    }
  ],
  "contributorsPerLine": 7,
  "projectName": "litestar",
  "projectOwner": "litestar-org",
  "repoType": "github",
  "repoHost": "https://github.com",
  "skipCi": true,
  "commitConvention": "angular",
  "commitType": "docs"
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           litestar-2.18.0/.devcontainer/                                                                      0000775 0000000 0000000 00000000000 15070515525 0016175 5                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        litestar-2.18.0/.devcontainer/Dockerfile                                                            0000664 0000000 0000000 00000001261 15070515525 0020167 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        # [Choice] Python version (use -bookworm or -bullseye variants on local arm64/Apple Silicon): 3, 3.13, 3.12, 3.11, 3.10, 3.9, 3.8, 3-bookworm, 3.13-bookworm, 3.12-bookworm, 3.11-bookworm, 3.10-bookworm, 3.9-bookworm, 3.8-bookworm, 3-bullseye, 3.11-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3-buster, 3.11-buster, 3.10-buster, 3.9-buster, 3.8-buster
ARG VERSION=3.12
ARG VARIANT=-bookworm
FROM python:${VERSION}${VARIANT}
ARG VERSION
ENV UV_LOCKED=1 UV_PYTHON=${VERSION}
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
    && apt-get purge -y fish
RUN python3 -m pip install --upgrade setuptools cython pip
                                                                                                                                                                                                                                                                                                                                               litestar-2.18.0/.devcontainer/devcontainer.json                                                     0000664 0000000 0000000 00000003406 15070515525 0021554 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        {
  "name": "litestar-org/litestar",
  "build": {
    "dockerfile": "./Dockerfile",
    "context": "."
  },
  "features": {
    "ghcr.io/devcontainers/features/common-utils:2": {
      "installZsh": "true",
      "username": "vscode",
      "userUid": "1000",
      "userGid": "1000",
      "upgradePackages": "true"
    },
    "ghcr.io/devcontainers/features/github-cli:1": {},
    "ghcr.io/devcontainers-contrib/features/pre-commit:2": {},
    "ghcr.io/devcontainers/features/python:1": "none",
    "ghcr.io/devcontainers/features/git:1": {
      "version": "latest",
      "ppa": "false"
    }
  },
  "customizations": {
    "codespaces": {
      "openFiles": ["CONTRIBUTING.rst"]
    },
    "vscode": {
      "extensions": [
        "mhutchie.git-graph",
        "eamodio.gitlens",
        "github.vscode-github-actions",
        "ms-python.black-formatter",
        "ms-python.mypy-type-checker",
        "charliermarsh.ruff"
      ],
      "settings": {
        "python.editor.defaultFormatter": "charliermarsh.ruff",
        "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
        "python.terminal.activateEnvInCurrentTerminal": true,
        "python.testing.unittestEnabled": false,
        "python.testing.pytestEnabled": true,
        "python.testing.pytestArgs": ["."],
        "python.terminal.launchArgs": ["-X", "dev"],
        "terminal.integrated.shell.linux": "/bin/bash",
        "terminal.integrated.profiles.linux": {
          "bash": {
            "path": "bash",
            "icon": "terminal-bash"
          },
          "zsh": {
            "path": "zsh"
          },
          "fish": {
            "path": "fish"
          }
        }
      }
    }
  },
  "forwardPorts": [8000],
  "postCreateCommand": [
    "uv",
    "sync"
  ],
  "remoteUser": "vscode"
}
                                                                                                                                                                                                                                                          litestar-2.18.0/.github/                                                                            0000775 0000000 0000000 00000000000 15070515525 0014776 5                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        litestar-2.18.0/.github/CODEOWNERS                                                                  0000664 0000000 0000000 00000001076 15070515525 0016375 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        # Code owner settings for `litestar`
# @maintainers should be assigned to all reviews.
# Most specific assignment takes precedence though, so if you add a more specific thing than the `*` glob, you must also add @maintainers
# For more info about code owners see https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-file-example
# Global Assignment
*      @litestar-org/maintainers @litestar-org/members
# Documentation
docs/* @litestar-org/maintainers @JacobCoffee @provinzkraut
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  litestar-2.18.0/.github/ISSUE_TEMPLATE/                                                             0000775 0000000 0000000 00000000000 15070515525 0017161 5                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        litestar-2.18.0/.github/ISSUE_TEMPLATE/BUG.yml                                                      0000664 0000000 0000000 00000005122 15070515525 0020321 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: "Bug Report"
description: Create an issue for a bug.
title: "Bug: 
"
labels:
  - "Bug :bug:"
  - "Triage Required"
projects:
  - "litestar-org/16"
body:
  - type: textarea
    id: description
    attributes:
      label: "Description"
      description: Please enter an description of the bug you are encountering
      placeholder:
    validations:
      required: true
  - type: input
    id: reprod-url
    attributes:
      label: "URL to code causing the issue"
      description: Please enter the URL to provide a reproduction of the issue, if applicable
      placeholder: ex. https://github.com/USERNAME/REPO-NAME
    validations:
      required: false
  - type: textarea
    id: mcve
    attributes:
      label: "MCVE"
      description: >-
        Please provide a minimal, complete, and verifiable example of the issue.
        This will be automatically formatted into code, so no need for backticks.
      placeholder: |
        from litestar import Litestar, get
        @get("/")
        def hello_world() -> str:
            return "hello world"
        app = Litestar(route_handlers=[hello_world])
      render: python
    validations:
      required: false
  - type: textarea
    id: reprod
    attributes:
      label: "Steps to reproduce"
      description: Please enter the exact steps to reproduce the issue
      value: |
        1. Go to '...'
        2. Click on '....'
        3. Scroll down to '....'
        4. See error
    validations:
      required: false
  - type: textarea
    id: screenshot
    attributes:
      label: "Screenshots"
      description: If applicable, add screenshots to help explain your problem.
      placeholder: Drag-and-drop images up add them directly or use Markdown to embed external images.
    validations:
      required: false
  - type: textarea
    id: logs
    attributes:
      label: "Logs"
      description: >-
        Please copy and paste any relevant log output.
        This will be automatically formatted into code, so no need for backticks.
      render: text
    validations:
      required: false
  - type: textarea
    id: version
    attributes:
      label: "Litestar Version"
      description: What version of Litestar are you using when encountering this issue?
    validations:
      required: true
  - type: checkboxes
    id: platform
    attributes:
      label: "Platform"
      description: What platform are you encountering the issue on?
      options:
        - label: "Linux"
        - label: "Mac"
        - label: "Windows"
        - label: "Other (Please specify in the description above)"
    validations:
      required: false
                                                                                                                                                                                                                                                                                                                                                                                                                                              litestar-2.18.0/.github/ISSUE_TEMPLATE/DOCS.yml                                                     0000664 0000000 0000000 00000000650 15070515525 0020435 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: "Documentation Update"
description: Create an issue for documentation changes
title: "Docs: "
labels:
  - "Documentation :books:"
projects:
  - "litestar-org/16"
body:
  - type: textarea
    id: summary
    attributes:
      label: "Summary"
      description: Provide a brief summary of your feature request
      placeholder: Describe in a few lines your feature request
    validations:
      required: true
                                                                                        litestar-2.18.0/.github/ISSUE_TEMPLATE/REQUEST.yml                                                  0000664 0000000 0000000 00000002343 15070515525 0021036 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: "Feature Request"
description: Create an issue for a new feature request
title: "Enhancement: "
labels:
  - "Enhancement"
projects:
  - "litestar-org/16"
body:
  - type: textarea
    id: summary
    attributes:
      label: "Summary"
      description: Provide a brief summary of your feature request
      placeholder: Describe in a few lines your feature request
    validations:
      required: true
  - type: textarea
    id: basic_example
    attributes:
      label: "Basic Example"
      description: Indicate here some basic examples of your feature.
      placeholder: Provide some basic example of your feature request
    validations:
      required: false
  - type: textarea
    id: drawbacks
    attributes:
      label: "Drawbacks and Impact"
      description: What are the drawbacks or impacts of your feature request?
      placeholder: Describe any the drawbacks or impacts of your feature request
    validations:
      required: false
  - type: textarea
    id: unresolved_question
    attributes:
      label: "Unresolved questions"
      description: What, if any, unresolved questions do you have about your feature request?
      placeholder: Identify any unresolved issues.
    validations:
      required: false
                                                                                                                                                                                                                                                                                             litestar-2.18.0/.github/ISSUE_TEMPLATE/config.yml                                                   0000664 0000000 0000000 00000000727 15070515525 0021157 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        blank_issues_enabled: false
contact_links:
  - name: Litestar Documentation
    url: https://docs.litestar.dev/
    about: Official Litestar documentation - please check here before opening an issue.
  - name: Litestar Website
    url: https://litestar.dev/
    about: Main Litestar website - for details about Litestar's projects.
  - name: Discord
    url: https://discord.gg/litestar
    about: Join our Discord community to chat or get in touch with the maintainers.
                                         litestar-2.18.0/.github/PULL_REQUEST_TEMPLATE.md                                                    0000664 0000000 0000000 00000001320 15070515525 0020573 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        
## Description
-
## Closes
                                                                                                                                                                                                                                                                                                                litestar-2.18.0/.github/dependabot.yml                                                              0000664 0000000 0000000 00000000165 15070515525 0017630 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "daily"
                                                                                                                                                                                                                                                                                                                                                                                                           litestar-2.18.0/.github/labeler.yml                                                                 0000664 0000000 0000000 00000013624 15070515525 0017135 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        version: v1
labels:
  # -- types -------------------------------------------------------------------
  - label: 'type/feat'
    sync: true
    matcher:
      title: '^feat(\([^)]+\))?!?:'
  - label: 'type/bug'
    sync: true
    matcher:
      title: '^fix(\([^)]+\))?!?:'
  - label: 'type/docs'
    sync: true
    matcher:
      title: '^docs(\([^)]+\))?:'
  - label: 'Breaking 🔨'
    sync: true
    matcher:
      title: '^(feat|fix)(\([^)]+\))?!:'
  # -- distinct areas ----------------------------------------------------------
  - label: '3.x'
    sync: true
    matcher:
      baseBranch: '^v3$'
  - label: 'area/docs'
    sync: true
    matcher:
      files:
        any: ['docs/*', 'docs/**/*', '**/*.rst', '**/*.md']
  - label: 'area/unit-tests'
    sync: true
    matcher:
      files:
        any: ['test/unit/*', 'test/unit/**/*']
  - label: 'area/end-to-end-tests'
    sync: true
    matcher:
      files:
        any: ['test/e2e/*', 'test/e2e/**/*']
  - label: 'area/test-apps'
    sync: true
    matcher:
      files:
        any: ['test/test_apps/*', 'test/test_apps/**/*']
  - label: 'area/docs'
    sync: true
    matcher:
      files:
        any: ['docs/*', 'docs/**/*', '**/*.rst', '**/*.md']
  - label: 'area/unit-tests'
    sync: true
    matcher:
      files:
        any: ['test/unit/*', 'test/unit/**/*']
  - label: 'area/end-to-end-tests'
    sync: true
    matcher:
      files:
        any: ['test/e2e/*', 'test/e2e/**/*']
  - label: 'area/test-apps'
    sync: true
    matcher:
      files:
        any: ['test/test_apps/*', 'test/test_apps/**/*']
  - label: 'area/ci'
    sync: true
    matcher:
      files:
        any: ['.github/**/*', 'codecov.yml', 'pre-commit-config.yaml', 'sonar-project.properties']
  - label: 'area/dependencies'
    sync: true
    matcher:
      files:
        any: ['pyproject.toml', '*.lock']
  - label: 'area/enums'
    sync: true
    matcher:
      files: ['litestar/enums.py']
  - label: 'area/background-tasks'
    sync: true
    matcher:
      files: ['litestar/background_tasks.py']
  - label: 'area/constants'
    sync: true
    matcher:
      files: ['litestar/constants.py']
  - label: 'area/concurrency'
    sync: true
    matcher:
      files: ['litestar/concurrency.py']
  - label: 'area/parsers'
    sync: true
    matcher:
      files: ['litestar/_parsers.py']
  - label: 'area/layers'
    sync: true
    matcher:
      files: ['litestar/_layers/*']
  - label: 'area/multipart'
    sync: true
    matcher:
      files: ['litestar/_multipart.py']
  - label: 'area/di'
    sync: true
    matcher:
      files: ['litestar/di.py']
  - label: 'area/file-system'
    sync: true
    matcher:
      files: ['litestar/file_system.py']
  - label: 'area/controller'
    sync: true
    matcher:
      files: ['litestar/controller.py']
  - label: 'area/serialization'
    sync: true
    matcher:
      files: ['litestar/serialization/*']
  - label: 'area/params'
    sync: true
    matcher:
      files: ['litestar/params.py']
  - label: 'area/template'
    sync: true
    matcher:
      files: ['litestar/template/*']
  - label: 'area/events'
    sync: true
    matcher:
      files: ['litestar/events/*']
  - label: 'area/router'
    sync: true
    matcher:
      files: ['litestar/router.py']
  - label: 'area/exceptions'
    sync: true
    matcher:
      files: ['litestar/exceptions/*']
  - label: 'area/static-files'
    sync: true
    matcher:
      files: ['litestar/static_files/*']
  - label: 'area/signature'
    sync: true
    matcher:
      files: ['litestar/_signature/*']
  - label: 'area/plugins'
    sync: true
    matcher:
      files: ['litestar/plugins/*']
  - label: 'area/stores'
    sync: true
    matcher:
      files: ['litestar/stores/*']
  - label: 'area/logging'
    sync: true
    matcher:
      files: ['litestar/logging/*']
  - label: 'area/connection'
    sync: true
    matcher:
      files: ['litestar/connection/*']
  - label: 'area/asgi'
    sync: true
    matcher:
      files: ['litestar/_asgi/*']
  - label: 'area/types'
    sync: true
    matcher:
      files: ['litestar/types/*']
  - label: 'area/kwargs'
    sync: true
    matcher:
      files: ['litestar/_kwargs/*']
  - label: 'area/datastructures'
    sync: true
    matcher:
      files: ['litestar/datastructures/*']
  - label: 'area/channels'
    sync: true
    matcher:
      files: ['litestar/channels/*']
  - label: 'area/response'
    sync: true
    matcher:
      files: ['litestar/response/*']
  - label: 'area/repository'
    sync: true
    matcher:
      files: ['litestar/repository/*']
  - label: 'area/security'
    sync: true
    matcher:
      files: ['litestar/security/*']
  - label: 'area/dto'
    sync: true
    matcher:
      files: ['litestar/dto/*']
  - label: 'area/testing'
    sync: true
    matcher:
      files: ['litestar/testing/*']
  - label: 'area/openapi'
    sync: true
    matcher:
      files: ['litestar/_openapi/*']
  - label: 'area/middleware'
    sync: true
    matcher:
      files: ['litestar/middleware/*']
  - label: 'area/handlers'
    sync: true
    matcher:
      files: ['litestar/handlers/*']
  - label: 'area/contrib'
    sync: true
    matcher:
      files: ['litestar/contrib/*']
  - label: 'area/private-api'
    sync: true
    matcher:
      files:
        any: ['litestar/_*.py', 'litestar/*/_*.py', 'litestar/_*/**/*.py']
  # -- Size Based Labels -------------------------------------------------------
  - label: 'size: small'
    sync: true
    matcher:
      files:
        count:
          gte: 1
          lte: 10
  - label: 'size: medium'
    sync: true
    matcher:
      files:
        count:
          gte: 10
          lte: 25
  - label: 'size: large'
    sync: true
    matcher:
      files:
        count:
          gte: 26
# -- Merge Checks --------------------------------------------------------------
checks:
  - context: 'No Merge check'
    description: "Disable merging when 'do not merge' label is set"
    labels:
      none: ['do not merge']
                                                                                                            litestar-2.18.0/.github/workflows/                                                                  0000775 0000000 0000000 00000000000 15070515525 0017033 5                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        litestar-2.18.0/.github/workflows/ci.yml                                                            0000664 0000000 0000000 00000022326 15070515525 0020156 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: Tests And Linting
on:
  pull_request:
  merge_group:
  push:
    branches:
      - main
      - v1.51
env:
  UV_LOCKED: 1
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.8"
      - name: Install Pre-Commit
        run: python -m pip install pre-commit
      - name: Load cached Pre-Commit Dependencies
        id: cached-pre-commit-dependencies
        uses: actions/cache@v4
        with:
          path: ~/.cache/pre-commit/
          key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
      - name: Execute Pre-Commit
        run: pre-commit run --show-diff-on-failure --color=always --all-files
  mypy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.8"
          allow-prereleases: true
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Run mypy
        run: uv run mypy
  pyright:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.8"
          allow-prereleases: true
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Run pyright
        run: uv run pyright
  slotscheck:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.8"
          allow-prereleases: false
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Run slotscheck
        run: uv run slotscheck litestar
  test:
    name: "test (${{ matrix.python-version }})"
    strategy:
      fail-fast: true
      matrix:
        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
    uses: ./.github/workflows/test.yml
    with:
      coverage: ${{ (matrix.python-version == '3.12' || matrix.python-version == '3.8') }}
      python-version: ${{ matrix.python-version }}
  # add an aggregate step here to check if any of the steps of the matrix 'test' job
  # failed. this allows us to have dynamic or diverging steps in the matrix, while still
  # being able to mark the 'test' step as a required check for a PR to be considered
  # mergeable, without having to specify each individual matrix item.
  test_success:
    needs: test
    # ensure this step always runs
    if: always()
    runs-on: ubuntu-latest
    steps:
      - name: Report success or fail
        run: exit ${{ needs.test.result == 'success' && '0' || '1' }}
  test_typing_extensions:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        typing-extensions: ["4.12.1", "4.13.1", "latest"]
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Set up python
        uses: actions/setup-python@v5
        with:
          python-version: 3.13
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.6.12"
          enable-cache: true
      - name: Install dependencies
        run: uv sync
      - name: Install typing-extensions
        if: ${{ matrix.typing-extensions != 'latest' }}
        run: uv pip install typing-extensions=="${{ matrix.typing-extensions }}"
      - name: Install typing-extensions
        if: ${{ matrix.typing-extensions == 'latest' }}
        run: uv pip install typing-extensions --upgrade --prerelease=allow
      - name: Test
        run: uv run --no-sync -- python -m pytest tests/unit/test_typing.py
  test_integration:
    name: Test server integration
    runs-on: ubuntu-latest
    strategy:
      matrix:
        uvicorn-version: ["uvicorn<0.27.0", "uvicorn>=0.27.0"]
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Set up python 3.11
        uses: actions/setup-python@v5
        with:
          python-version: 3.11
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Install Build Dependencies
        run: sudo apt-get install build-essential libpq-dev python3-dev -y
      - name: Install dependencies
        run: |
          uv sync
          uv pip install -U "${{ matrix.uvicorn-version }}"
      - name: Set PYTHONPATH
        run: echo "PYTHONPATH=$PWD" >> $GITHUB_ENV
      - name: Test
        run: uv run --no-sync pytest tests -m server_integration
  test-platform-compat:
    if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'test platform compat')
    strategy:
      fail-fast: false
      matrix:
        os: ["macos-latest", "windows-latest"]
    uses: ./.github/workflows/test.yml
    with:
      python-version: "3.13"
      os: ${{ matrix.os }}
      timeout: 30
  codeql:
    needs:
      - test
      - validate
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Initialize CodeQL Without Dependencies
        uses: github/codeql-action/init@v3
        with:
          setup-python-dependencies: false
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v3
  build-docs:
    needs:
      - validate
    if: github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Install Build Dependencies
        run: sudo apt-get install build-essential libpq-dev python3-dev -y
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"
          allow-prereleases: true
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Build docs
        run: uv run make docs
      - name: Check docs links
        env:
          LITESTAR_DOCS_IGNORE_MISSING_EXAMPLE_OUTPUT: 1
        run: uv run make docs-linkcheck
      - name: Save PR number
        run: |
          echo "${{ github.event.number }}" > .pr_number
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: docs-preview
          path: |
            docs/_build/html
            .pr_number
          include-hidden-files: true
  test_minimal_app:
    name: Test Minimal Application with Base Dependencies
    runs-on: ubuntu-latest
    env:
      python_version: "3.12"
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Set pythonpath
        run: echo "PYTHONPATH=$PWD" >> $GITHUB_ENV
      - name: Test
        run: |
          mv tests/examples/test_hello_world.py test_hello_world.py
          uv run pytest test_hello_world.py
  test_pydantic_1_app:
    name: Test Minimal Pydantic 1 application
    runs-on: ubuntu-latest
    env:
      python_version: "3.12"
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Install Build Dependencies
        run: sudo apt-get install build-essential libpq-dev python3-dev -y
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Install dependencies
        run: |
          uv sync
          uv pip install "pydantic==1.*"
      - name: Set pythonpath
        run: echo "PYTHONPATH=$PWD" >> $GITHUB_ENV
      - name: Test
        run: uv run --no-sync coverage run --branch -m unittest test_apps/pydantic_1_app.py
      - name: Rename coverage file
        run: mv .coverage* .coverage.pydantic_v1
      - uses: actions/upload-artifact@v4
        with:
          name: coverage-data-pydantic_v1-${{ inputs.python-version }}
          path: .coverage.pydantic_v1
          include-hidden-files: true
  upload-test-coverage:
    runs-on: ubuntu-latest
    needs:
      - test
      - test_pydantic_1_app
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - name: Download Artifacts
        uses: actions/download-artifact@v5
        with:
          pattern: coverage-data*
          merge-multiple: true
      - name: Combine coverage files
        run: |
          python -Im pip install coverage covdefaults
          python -Im coverage combine
          python -Im coverage xml -i
      - name: Fix coverage file name
        run: sed -i "s/home\/runner\/work\/litestar\/litestar/github\/workspace/g" coverage.xml
      - name: Upload coverage reports to Codecov
        uses: codecov/codecov-action@v5
        with:
          files: coverage.xml
          token: ${{ secrets.CODECOV_TOKEN }}
                                                                                                                                                                                                                                                                                                          litestar-2.18.0/.github/workflows/codeql.yml                                                        0000664 0000000 0000000 00000000674 15070515525 0021034 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: CodeQL scheduled
on:
  schedule:
    - cron: "0 4 * * *"
jobs:
  codeql:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          ref: "main"
      - name: Initialize CodeQL With Dependencies
        uses: github/codeql-action/init@v3
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v3
                                                                    litestar-2.18.0/.github/workflows/docs-preview.yml                                                  0000664 0000000 0000000 00000004733 15070515525 0022174 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: Deploy documentation preview
on:
  workflow_run:
    workflows: [Tests And Linting]
    types: [completed]
jobs:
  deploy:
    if: ${{ github.event.workflow_run.conclusion == 'success' &&  github.event.workflow_run.event == 'pull_request' }}
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Download artifact
        uses: dawidd6/action-download-artifact@v11
        with:
          workflow_conclusion: success
          run_id: ${{ github.event.workflow_run.id }}
          path: docs-preview
          name: docs-preview
      - name: Validate and set PR number
        run: |
          PR_NUMBER=$(cat docs-preview/.pr_number)
          if ! [[ "$PR_NUMBER" =~ ^[0-9]+$ ]]; then
            echo "Invalid PR number: $PR_NUMBER"
            exit 1
          fi
          echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV
      - name: Deploy docs preview
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          folder: docs-preview/docs/_build/html
          token: ${{ secrets.DOCS_PREVIEW_DEPLOY_TOKEN }}
          repository-name: litestar-org/litestar-docs-preview
          clean: false
          target-folder: ${{ env.PR_NUMBER }}
          branch: gh-pages
      - uses: actions/github-script@v7
        env:
          PR_NUMBER: ${{ env.PR_NUMBER }}
        with:
          script: |
            const issue_number = process.env.PR_NUMBER
            const body = "Documentation preview will be available shortly at https://litestar-org.github.io/litestar-docs-preview/" + issue_number
            const opts = github.rest.issues.listComments.endpoint.merge({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: issue_number,
            });
            const comments = await github.paginate(opts)
            for (const comment of comments) {
              if (comment.user.id === 41898282 && comment.body === body) {
                await github.rest.issues.deleteComment({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  comment_id: comment.id
                })
              }
            }
            await github.rest.issues.createComment({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  issue_number: issue_number,
                  body: body,
            })
                                     litestar-2.18.0/.github/workflows/docs.yml                                                          0000664 0000000 0000000 00000003143 15070515525 0020507 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: Documentation Building
on:
  release:
    types: [published]
  push:
    branches:
      - main
  workflow_dispatch:
    inputs:
      version:
        description: 'Version to build docs for (1, 2, main)'
        required: true
        default: 'main'
        type: choice
        options:
          - main
          - '2'
          - '1'
env:
  UV_LOCKED: 1
jobs:
  docs:
    permissions:
      contents: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Install dependencies
        run: uv sync
      - name: Fetch gh pages
        run: git fetch origin gh-pages --depth=1
      - name: Build release docs
        run: uv run python tools/build_docs.py docs-build
        if: github.event_name == 'release'
      - name: Build docs (main branch)
        run: uv run python tools/build_docs.py docs-build --version main
        if: github.event_name == 'push' && github.ref == 'refs/heads/main'
      - name: Build docs (manual trigger)
        run: |
          if [ "${{ inputs.version }}" == "release" ]; then
            uv run python tools/build_docs.py docs-build
          else
            uv run python tools/build_docs.py docs-build --version ${{ inputs.version }}
          fi
        if: github.event_name == 'workflow_dispatch'
      - name: Deploy
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          folder: docs-build
                                                                                                                                                                                                                                                                                                                                                                                                                             litestar-2.18.0/.github/workflows/notify-released-issues.yml                                        0000664 0000000 0000000 00000001570 15070515525 0024164 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: Notify released issues
on:
  workflow_call:
    inputs:
      release_tag:
        type: string
        required: true
jobs:
  notify:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - name: Get released issues
        id: get-released-issues
        run:
          echo "issues=$(python ./.github/workflows/notify_released_issues/get_closed_issues.py ${{ inputs.release_tag }})" >> "$GITHUB_OUTPUT"
      - uses: actions/github-script@v7
        env:
          CLOSED_ISSUES: ${{ steps.get-released-issues.outputs.issues }}
        with:
          script: |
            const script = require('./.github/workflows/notify_released_issues/notify.js')
            await script({github, context, core})
                                                                                                                                        litestar-2.18.0/.github/workflows/notify_released_issues/                                           0000775 0000000 0000000 00000000000 15070515525 0023602 5                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        litestar-2.18.0/.github/workflows/notify_released_issues/get_closed_issues.py                       0000664 0000000 0000000 00000001650 15070515525 0027661 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        from __future__ import annotations
import itertools
import json
import pathlib
import re
import sys
__all__ = (
    "find_resolved_issues",
    "main",
)
def find_resolved_issues(source: str, tag: str) -> list[str]:
    version = tag.split("v", maxsplit=1)[-1]
    changelog_line = f".. changelog:: {version}"
    stop_line = ".. changelog::"
    return list(
        {
            issue
            for line in itertools.takewhile(
                lambda l: stop_line not in l,  # noqa: E741
                source.split(changelog_line, maxsplit=1)[1].splitlines(),
            )
            if re.match(r"\s+:issue: [\d ,]+", line)
            for issue in re.findall(r"\d+", line)
        }
    )
def main(tag: str) -> str:
    source = pathlib.Path("docs/release-notes/changelog.rst").read_text()
    return json.dumps(find_resolved_issues(source, tag))
if __name__ == "__main__":
    print(main(sys.argv[1]))  # noqa: T201
                                                                                        litestar-2.18.0/.github/workflows/notify_released_issues/notify.js                                  0000664 0000000 0000000 00000002273 15070515525 0025454 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        module.exports = async ({github, context, core}) => {
    const issues = JSON.parse(process.env.CLOSED_ISSUES)
    const releaseURL = context.payload.release.html_url
    const releaseName = context.payload.release.name
    const baseBody = "A fix for this issue has been released in"
    const body = baseBody + ` [${releaseName}](${releaseURL})`
    for (const issueNumber of issues) {
        const opts = github.rest.issues.listComments.endpoint.merge({
            owner: context.repo.owner,
            repo: context.repo.repo,
            issue_number: issueNumber,
        });
        const comments = await github.paginate(opts)
        for (const comment of comments) {
            if (comment.user.id === 41898282 && comment.body.startsWith(baseBody)) {
                await github.rest.issues.deleteComment({
                    owner: context.repo.owner,
                    repo: context.repo.repo,
                    comment_id: comment.id
                })
            }
        }
        await github.rest.issues.createComment({
            owner: context.repo.owner,
            repo: context.repo.repo,
            issue_number: issueNumber,
            body: body,
        })
    }
}
                                                                                                                                                                                                                                                                                                                                     litestar-2.18.0/.github/workflows/pr-labeler.yml                                                    0000664 0000000 0000000 00000002622 15070515525 0021605 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: "Pull Request Labeler"
on:
  pull_request_target:
jobs:
  apply-labels:
    permissions:
      contents: read
      pull-requests: write
      checks: write
      statuses: write
    runs-on: ubuntu-latest
    steps:
    - uses: fuxingloh/multi-labeler@v4
      with:
        github-token: "${{ secrets.GITHUB_TOKEN }}"
  distinguish-pr-origin:
    needs: apply-labels
    if: ${{ always() }}
    permissions:
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/github-script@v7
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            const maintainers = [
              'JacobCoffee', 'provinzkraut', 'cofin',
              'peterschutt', 'Alc-Alc', 'guacs',
              'dependabot[bot]', 'all-contributors[bot]'
            ]
            if (maintainers.includes(context.payload.sender.login)) {
              github.rest.issues.addLabels({
                issue_number: context.issue.number,
                owner: context.repo.owner,
                repo: context.repo.repo,
                labels: ['pr/internal']
              })
            } else {
              github.rest.issues.addLabels({
                issue_number: context.issue.number,
                owner: context.repo.owner,
                repo: context.repo.repo,
                labels: ['pr/external', 'Triage Required :hospital:']
              })
            }
                                                                                                              litestar-2.18.0/.github/workflows/pr-merged.yml                                                     0000664 0000000 0000000 00000003654 15070515525 0021450 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: "PR merged"
on:
  pull_request:
    types:
      - closed
    branches:
      - main
      - v3.0
jobs:
  close_and_notify:
    name: Close issues and notify
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      - uses: actions/github-script@v7
        with:
          script: |
            const prNumber = context.payload.number
            const branch = context.baseRef
            // TODO: use semantic commits to specify the exact version, when it will be released
            const commentBody = `\nThis issue has been closed in #${prNumber}. The change will be included in upcoming releases.`
            const query = `query($number: Int!, $owner: String!, $name: String!) { repository(owner: $owner, name: $name) {
                pullRequest(number: $number) {
                      id
                      closingIssuesReferences (first: 10) { edges { node { number } } }
                      }
                  }
              }`
            const res = await github.graphql(query, {number: prNumber, owner: context.repo.owner, name: context.repo.repo})
            const linkedIssues = res.repository.pullRequest.closingIssuesReferences.edges.map(
              edge => edge.node.number
            )
            for (const issueNumber of linkedIssues) {
              const res = await github.rest.issues.update({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  issue_number: issueNumber,
                  state: "closed",
                  state_reason: "completed"
              })
              if (res.status === 200) {
                await github.rest.issues.createComment({
                      owner: context.repo.owner,
                      repo: context.repo.repo,
                      issue_number: issueNumber,
                      body: commentBody,
                })
              }
            }
                                                                                    litestar-2.18.0/.github/workflows/pr-title.yml                                                      0000664 0000000 0000000 00000000532 15070515525 0021316 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: "Lint PR Title"
on:
  pull_request_target:
    types:
      - opened
      - edited
      - synchronize
permissions:
  pull-requests: read
jobs:
  main:
    name: Validate PR title
    runs-on: ubuntu-latest
    steps:
      - uses: amannn/action-semantic-pull-request@v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                                                                                                                                                                      litestar-2.18.0/.github/workflows/publish.yml                                                       0000664 0000000 0000000 00000001557 15070515525 0021234 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: Latest Release
on:
  release:
    types: [published]
  workflow_dispatch:
jobs:
  publish-release:
    name: upload release to PyPI
    runs-on: ubuntu-latest
    permissions:
      id-token: write
    environment: release
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.5.4"
          enable-cache: true
      - name: Build package
        run: uv build
      - name: Publish package distributions to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1
  notify-issues:
    needs: publish-release
    name: Notify issues
    uses: ./.github/workflows/notify-released-issues.yml
    with:
      release_tag: ${{ github.event.release.tag_name }}
                                                                                                                                                 litestar-2.18.0/.github/workflows/test.yml                                                          0000664 0000000 0000000 00000004133 15070515525 0020536 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        name: Test
on:
  workflow_call:
    inputs:
      python-version:
        required: true
        type: string
      coverage:
        required: false
        type: boolean
        default: false
      os:
        required: false
        type: string
        default: "ubuntu-latest"
      timeout:
        required: false
        type: number
        default: 10
env:
  UV_LOCKED: 1
jobs:
  test:
    runs-on: ${{ inputs.os }}
    timeout-minutes: ${{ inputs.timeout }}
    defaults:
      run:
        shell: bash
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Set up python ${{ inputs.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ inputs.python-version }}
      # Linux Source
      - name: Install Build Dependencies
        run: sudo apt-get install build-essential libpq-dev python3-dev -y
        if: startsWith(inputs.os, 'ubuntu')
      # MacOS Source
      - name: Install Build Dependencies
        run: brew install libpq && brew link --force libpq
        if: startsWith(inputs.os, 'macos')
      # Windows Source
      - name: Install Build Dependencies
        uses: ikalnytskyi/action-setup-postgres@v7
        if: startsWith(inputs.os, 'windows')
      - name: Install uv
        uses: astral-sh/setup-uv@v6
        with:
          version: "0.8.8"
          enable-cache: true
      - name: Install dependencies
        run: uv sync
      - name: Set PYTHONPATH
        run: echo "PYTHONPATH=$PWD" >> $GITHUB_ENV
      - name: Test
        if: ${{ !inputs.coverage }}
        run: uv run pytest docs/examples tests -n auto
      - name: Test with coverage
        if: inputs.coverage
        run: uv run pytest docs/examples tests -n auto --cov
      - name: Rename coverage file
        if: inputs.coverage
        run: mv .coverage .coverage.${{ inputs.python-version }}
      - uses: actions/upload-artifact@v4
        if: inputs.coverage
        with:
          name: coverage-data-${{ inputs.python-version }}
          path: .coverage.${{ inputs.python-version }}
          include-hidden-files: true
                                                                                                                                                                                                                                                                                                                                                                                                                                     litestar-2.18.0/.gitignore                                                                          0000664 0000000 0000000 00000001004 15070515525 0015421 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        # folders
*.egg-info/
.auto_pytabs_cache/
.hypothesis/
.idea/
.mypy_cache/
.pytest_cache/
.scannerwork/
.unasyncd_cache/
.venv/
.venv*
.vscode/
__pycache__/
assets/
build/
dist/
html/
node_modules/
results/
site/
target/
# files
**/*.so
**/*.sqlite
**/*.sqlite*
*.iml
.DS_Store
.coverage
.ruff_cache
/docs/_build/
coverage.*
setup.py
# pdm
.pdm.toml
.pdm-python
.pdm-build/
# pdm - PEP 582
__pypackages__/
# pyenv / rtx / asdf
.tool-versions
.python-version
/.dmypy.json
# test certificates
certs/
pdm.toml
.zed
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            litestar-2.18.0/.pre-commit-config.yaml                                                             0000664 0000000 0000000 00000002767 15070515525 0017733 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        default_language_version:
  python: "3.12"
repos:
  - repo: https://github.com/compilerla/conventional-pre-commit
    rev: v3.6.0
    hooks:
      - id: conventional-pre-commit
        stages: [commit-msg]
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v5.0.0
    hooks:
      - id: check-ast
      - id: check-case-conflict
      - id: check-toml
      - id: debug-statements
        exclude: ^(litestar/config/app\.py|litestar/app\.py|test_apps/debugging/main\.py)$
      - id: end-of-file-fixer
      - id: mixed-line-ending
      - id: trailing-whitespace
        exclude: "tests/unit/test_openapi/test_typescript_converter/test_converter.py"
  - repo: https://github.com/provinzkraut/unasyncd
    rev: "v0.8.1"
    hooks:
      - id: unasyncd
        additional_dependencies: ["ruff==0.12.8"]
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: "v0.12.8"
    hooks:
      - id: ruff
        args: ["--fix"]
      - id: ruff-format
  - repo: https://github.com/crate-ci/typos
    rev: v1.30.3
    hooks:
      - id: typos
  - repo: https://github.com/python-formate/flake8-dunder-all
    rev: v0.4.1
    hooks:
      - id: ensure-dunder-all
        exclude: "test*|examples*|tools"
        args: ["--use-tuple"]
  - repo: https://github.com/sphinx-contrib/sphinx-lint
    rev: "v1.0.0"
    hooks:
      - id: sphinx-lint
  - repo: local
    hooks:
      - id: pypi-readme
        name: pypi-readme
        language: python
        entry: python tools/pypi_readme.py
        types: [markdown]
         litestar-2.18.0/CITATION.cff                                                                        0000664 0000000 0000000 00000003053 15070515525 0015331 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        cff-version: 1.2.0
title: Litestar
message: 'If you use this software, please cite it as below.'
type: software
authors:
  - given-names: Janek Nouvertné
  - given-names: Peter Schutt
  - given-names: Cody Fincher
  - given-names: Visakh Unnikrishnan
  - given-names: Jacob Coffee
  - given-names: Na'aman Hirschfeld
repository-code: 'https://github.com/litestar-org/litestar'
url: 'https://docs.litestar.dev/latest/'
abstract: >-
  Litestar is a powerful, flexible, and highly performant Python web framework
  for building modern APIs and applications. With an emphasis on developer
  experience and performance, Litestar provides a rich set of features out of the
  box, including automatic API documentation, data validation and serialization,
  ORM integration, dependency injection, caching, websockets, and more.
  Litestar's layered architecture and open ecosystem enable seamless integration
  with popular libraries like Pydantic, SQLAlchemy, and msgspec. It offers both
  asynchronous and synchronous execution models without performance penalties.
  With Litestar, you can effortlessly build and deploy production-ready APIs and
  web applications, leveraging features like interactive API documentation,
  middlewares for common tasks, session and JWT-based authentication, and strict
  runtime validation for enhanced safety. Experience the perfect blend of ease
  of use, flexibility and performance with Litestar.
keywords:
  - python
  - web
  - framework
  - typing
  - dependency injection
  - api
license: MIT
version: v2.8.0
date-released: '2024-04-05'
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     litestar-2.18.0/CONTRIBUTING.rst                                                                    0000664 0000000 0000000 00000034024 15070515525 0016102 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        Contribution Guide
==================
.. _pipx: https://pypa.github.io/pipx/
.. |pipx| replace:: `pipx `__
.. _homebrew: https://brew.sh/
.. |homebrew| replace:: `Homebrew `__
Getting Started
---------------
Supported Python Versions
+++++++++++++++++++++++++
The lowest currently supported version is Python 3.8.
At a minimum you will need Python 3.8 for code changes and 3.12 if you plan on doing documentation building / changes.
You can use various tools to manage multiple Python versions on your system including:
* `pyenv `_ and `pyenv-win for Windows `_
* `rtx / mise `_
* `asdf `_
* `Building each version manually from source `_
* Utilizing `GitHub Codespaces `_
We use the lowest supported version in our type-checking CI,
this ensures that the changes you made are backward compatible.
Setting up the environment
++++++++++++++++++++++++++
.. tip:: We maintain a Makefile with several commands to help with common tasks.
   You can run ``make help`` to see a list of available commands.
If you are utilizing `GitHub Codespaces `_,
the environment will bootstrap itself automatically. The steps below are for local development.
#. Install `uv `_:
#. Run ``make install`` to create a `virtual environment `_
   and install the required development dependencies or run the ``uv sync`` command manually:
   .. code-block:: shell
        :caption: Installing the development dependencies
        uv sync
.. tip:: Many modern IDEs like PyCharm or VS Code will enable the uv-managed virtualenv that is created in step 2
   for you automatically.
   If your IDE / editor does not offer this functionality, then you will need to manually activate the virtualenv
   yourself. Otherwise you may encounter errors or unexpected behaviour when trying to run the commands referenced
   within this document.
   To activate the virtualenv manually, please consult uv's documentation on
   `working with virtual environments `_.
   The rest of this document will assume this environment is active wherever commands are referenced.
Code contributions
------------------
Workflow
++++++++
#. `Fork `_ the `Litestar repository `_
#. Clone your fork locally with git
#. `Set up the environment <#setting-up-the-environment>`_
#. Make your changes
#. (Optional) Run ``pre-commit run --all-files`` to run linters and formatters. This step is optional and will be executed
   automatically by git before you make a commit, but you may want to run it manually in order to apply fixes
#. Commit your changes to git. We follow `conventional commits `_
   which are enforced using a ``pre-commit`` hook.
#. Push the changes to your fork
#. Open a `pull request `_. Give the pull request a descriptive title
   indicating what it changes. The style of the PR title should also follow
   `conventional commits `_, and this is enforced using a GitHub action.
#. Add yourself as a contributor using the `all-contributors bot `_
Guidelines for writing code
----------------------------
- Code should be `Pythonic and zen `_
- All code should be fully `typed `_. This is enforced via
  `mypy `_ and `Pyright `_
  * When requiring complex types, use a `type alias `_.
    Check :doc:`reference/types` if a type alias for your use case already exists
  * If something cannot be typed correctly due to a limitation of the type checkers, you may use :func:`typing.cast`
    to rectify the situation. However, you should only use this as a last resort if you've exhausted all other options
    of `type narrowing `_, such as :func:`isinstance` checks
    and `type guards `_.
  * You may use a properly scoped ``type: ignore`` if you ensured that a line is correct, but mypy / pyright has
    issues with it.
    Properly scoped meaning do not use blank ``type: ignore``, instead supply the specific error code, e.g.,
    ``type: ignore[attr-defined]``
- If you are adding or modifying existing code, ensure that it's fully tested. 100% test coverage is mandatory, and will
  be checked on the PR using `SonarCloud `_ and
  `Codecov `_
- All functions, methods, classes, and attributes should be documented with a docstring. We use the
  `Google docstring style `_. If you come
  across a function or method that doesn't conform to this standard, please update it as you go
- When adding a new public interface, it has to be  included in the reference documentation located in
  ``docs/reference``. If applicable, add or modify examples in the docs related to the new functionality implemented,
  following the guidelines established in `Adding examples`_.
Writing and running tests
+++++++++++++++++++++++++
Tests are contained within the ``tests`` directory, and follow the same directory structure as the ``litestar`` module.
If you are adding a test case, it should be located within the correct submodule of ``tests``. E.g., tests for
``litestar/utils/sync.py`` reside in ``tests/utils/test_sync.py``.
The ``Makefile`` includes several commands for running tests:
- ``make test`` to run tests located in ``tests``
- ``make test-examples`` to run tests located in ``docs/examples/tests``
- ``make test-all`` to run all tests
- ``make coverage`` to run tests with coverage and generate an html report
The tests make use of `pytest-xdist `_ to speed up
test runs. These are enabled by default when running ``make test``, ``make test-all``
or ``make coverage``. Due to the nature of pytest-xdist, attaching a debugger isn't as
straightforward. For debugging, it's recommended to run the tests individually with
``pytest `` or via an IDE, which will skip ``pytest-xdist``.
Running type checkers
+++++++++++++++++++++
We use `mypy `_ and `pyright `_ to
enforce type safety. You can run them with:
- ``make mypy``
- ``make pyright``
- ``make type-check`` to run both
- ``make lint`` to run pre-commit hooks and type checkers.
Our type checkers are run on Python 3.8 in CI, so you should make sure to run them on the same version locally as well.
Project documentation
---------------------
The documentation is located in the ``/docs`` directory and is written  in
`reStructuredText `_ with the `Sphinx `_.
library. If you're unfamiliar with any of those,
`reStructuredText primer `_ and
`Sphinx quickstart `_ are recommended reads.
Docs theme and appearance
+++++++++++++++++++++++++
We welcome contributions that enhance / improve the appearance and usability of the docs. We use the excellent
`PyData Sphinx Theme `_ theme, which comes with a lot of options out of the box.
If you wish to contribute to the docs style / setup, or static site generation, you should consult the theme docs
as a first step.
Running the docs locally
++++++++++++++++++++++++
You can serve the documentation locally with
.. code-block:: shell
    :caption: Serving the documentation locally
    make docs-serve
or build it with
.. code-block:: shell
    :caption: Serving the documentation locally
    make docs
Writing and editing docs
++++++++++++++++++++++++
We welcome contributions that enhance / improve the content of the docs. Feel free to add examples, clarify text,
restructure the docs, etc., but make sure to follow these guidelines:
- Write text in idiomatic English, using simple language
- Do not use contractions for ease of reading for non-native English speakers
- Opt for `Oxford commas `_ when listing a series of terms
- Keep examples simple and self contained (see `Adding examples`_). This is to ensure they are tested
  alongside the rest of the test suite and properly type checked and linted.
- Provide links where applicable.
- Use `intersphinx `_ wherever possible when
  referencing external libraries
- Provide diagrams using `Mermaid `_ where applicable and possible
Adding examples
~~~~~~~~~~~~~~~
The examples from the docs are located in their own modules inside the ``/docs/examples`` folder. This makes it easier
to test them alongside the rest of the test suite, ensuring they do not become stale as Litestar evolves.
Please follow the next guidelines when adding a new example:
- Add the example in the corresponding module directory in ``/docs/examples`` or create a new one if necessary
- Create a suite for the module in ``/tests/examples`` that tests the aspects of the example that it demonstrates
- Reference the example in the rst file with an external reference code block, e.g.
.. code-block:: rst
   :caption: An example of how to use literal includes of external files
   .. literalinclude:: /examples/test_thing.py
      :language: python
      :caption: All includes should have a descriptive caption
Automatically execute examples
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Our docs include a Sphinx extension that can automatically run requests against example apps
and include their result in the documentation page when its being built. This only requires 2 steps:
1. Create an example file with an ``app`` object in it, which is an instance of ``Litestar``
2. Add a comment in the form of ``# run: /hello`` to the example file
When building the docs (or serving them locally), a process serving the ``app`` instance
will be launched, and the requests specified in the comments will be run against it. The
comments will be stripped from the result, and the output of the ``curl`` invocation inserted
after the example code-block.
The ``# run:`` syntax is nothing special; everything after the colon will be passed to
the ``curl`` command that's being invoked. The URL is built automatically, so the
specified path can just be a path relative to the app.
In practice, this looks like the following:
.. code-block:: python
   :caption: An example of how to use the automatic example runner
   :no-upgrade:
   from typing import Dict
   from litestar import Litestar, get
   @get("/")
   def hello_world() -> Dict[str, str]:
       """Handler function that returns a greeting dictionary."""
       return {"hello": "world"}
   app = Litestar(route_handlers=[hello_world])
   # run: /
This is equivalent to:
.. code-block:: python
   :caption: An example of how to use the automatic example runner
      from typing import Dict
      from litestar import Litestar, get
      @get("/")
      def hello_world() -> Dict[str, str]:
          """Handler function that returns a greeting dictionary."""
          return {"hello": "world"}
      app = Litestar(route_handlers=[hello_world])
.. admonition:: Run it
      .. code-block:: bash
         > curl http://127.0.0.1:8000/
         {"hello": "world"}
Creating a New Release
----------------------
#. Checkout the ``main`` branch:
   .. code-block:: shell
        :caption: Checking out the main branch of the ``litestar`` repository
        git checkout main
#. Run the release preparation script:
   .. code-block:: shell
        :caption: Preparing  a new release
        python tools/prepare_release.py  --update-version --create-draft-release
   Replace ```` with the desired version number following the
   `versioning scheme `_.
   This script will:
   - Update the version in ``pyproject.toml``
   - Generate a changelog entry in :doc:`/release-notes/changelog`
   - Create a draft release on GitHub
#. Review the generated changelog entry in :doc:`/release-notes/changelog` to ensure it looks correct.
#. Commit the changes to ``main``:
   .. code-block:: shell
        :caption: Committing the changes to the main branch
        git commit -am "chore(release): prepare release vX.Y.Z"
   Replace ``vX.Y.Z`` with the actual version number.
#. Create a new branch for the release:
   .. code-block:: shell
        :caption: Creating a new branch for the release
        git checkout -b vX.Y.Z
#. Push the changes to a ``vX.Y.Z`` branch:
   .. code-block:: shell
        :caption: Pushing the changes to the ``vX.Y.Z`` branch
        git push origin vX.Y.Z
#. Open a pull request from the ``vX.Y.Z`` branch to ``main``.
#. Once the pull request is approved, go to the draft release on GitHub
   (the release preparation script will provide a link).
#. Review the release notes in the draft release to ensure they look correct.
#. If everything looks good, click "Publish release" to make the release official.
#. Go to the `Release Action `_ and approve
   the release workflow if necessary.
#. Check that the release workflow runs successfully.
.. note:: The version number should follow `semantic versioning `_ and
   `PEP 440 `_.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            litestar-2.18.0/LICENSE                                                                             0000664 0000000 0000000 00000002120 15070515525 0014436 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        The MIT License (MIT)
Copyright (c) 2021, 2022, 2023, 2024, 2025 Litestar Org.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
                                                                                                                                                                                                                                                                                                                                                                                                                                                litestar-2.18.0/Makefile                                                                            0000664 0000000 0000000 00000012633 15070515525 0015103 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        SHELL := /bin/bash
# =============================================================================
# Variables
# =============================================================================
.DEFAULT_GOAL:=help
.ONESHELL:
ENV_PREFIX		=  .venv/bin/
VENV_EXISTS		=	$(shell python3 -c "if __import__('pathlib').Path('.venv/bin/activate').exists(): print('yes')")
.EXPORT_ALL_VARIABLES:
.PHONY: help
help: 		   										## Display this help text for Makefile
	@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n  make \033[36m\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf "  \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
.PHONY: upgrade
upgrade:       										## Upgrade all dependencies to the latest stable versions
	@echo "=> Updating all dependencies"
	@uv lock --upgrade
	@echo "=> Dependencies Updated"
	@uv run pre-commit autoupdate
	@echo "=> Updated Pre-commit"
# =============================================================================
# Developer Utils
# =============================================================================
.PHONY: install
install:  											## Install dependencies
	@uv sync
.PHONY: clean
clean: 												## Cleanup temporary build artifacts
	@echo "=> Cleaning working directory"
	@rm -rf .pytest_cache .ruff_cache .hypothesis build/ -rf dist/ .eggs/
	@find . -name '*.egg-info' -exec rm -rf {} +
	@find . -type f -name '*.egg' -exec rm -f {} +
	@find . -name '*.pyc' -exec rm -f {} +
	@find . -name '*.pyo' -exec rm -f {} +
	@find . -name '*~' -exec rm -f {} +
	@find . -name '__pycache__' -exec rm -rf {} +
	@find . -name '.ipynb_checkpoints' -exec rm -rf {} +
	@rm -rf .coverage coverage.xml coverage.json htmlcov/ .pytest_cache tests/.pytest_cache tests/**/.pytest_cache .mypy_cache
	$(MAKE) docs-clean
.PHONY: destroy
destroy: 											## Destroy the virtual environment
	@rm -rf .venv
.PHONY: lock
lock:                                             ## Rebuild lockfiles from scratch, updating all dependencies
	@uv lock
# =============================================================================
# Tests, Linting, Coverage
# =============================================================================
.PHONY: mypy
mypy:                                               ## Run mypy
	@echo "=> Running mypy"
	@uv run dmypy run
	@echo "=> mypy complete"
.PHONY: mypy-nocache
mypy-nocache:                                       ## Run Mypy without cache
	@echo "=> Running mypy without a cache"
	@uv run dmypy run -- --cache-dir=/dev/null
	@echo "=> mypy complete"
.PHONY: pyright
pyright:                                            ## Run pyright
	@echo "=> Running pyright"
	@uv run pyright
	@echo "=> pyright complete"
.PHONY: type-check
type-check: mypy pyright                            ## Run all type checking
.PHONY: pre-commit
pre-commit: 										## Runs pre-commit hooks; includes ruff formatting and linting, codespell
	@echo "=> Running pre-commit process"
	@uv run pre-commit run --all-files
	@echo "=> Pre-commit complete"
.PHONY: slots-check
slots-check: 										## Check for slots usage in classes
	@echo "=> Checking for slots usage in classes"
	@uv run slotscheck litestar
	@echo "=> Slots check complete"
.PHONY: lint
lint: pre-commit type-check slots-check				## Run all linting
.PHONY: coverage
coverage:  											## Run the tests and generate coverage report
	@echo "=> Running tests with coverage"
	@uv run pytest tests --cov -n auto
	@uv run coverage html
	@uv run coverage xml
	@echo "=> Coverage report generated"
.PHONY: test
test:  												## Run the tests
	@echo "=> Running test cases"
	@uv run pytest tests
	@echo "=> Tests complete"
.PHONY: test-examples
test-examples:            			              	## Run the examples tests
	@uv run pytest docs/examples
.PHONY: test-all
test-all: test test-examples 						## Run all tests
.PHONY: check-all
check-all: lint test-all coverage                   ## Run all linting, tests, and coverage checks
# =============================================================================
# Docs
# =============================================================================
# XXX: docs commands are pinned to Python 3.12 due to picologging not being compatible with 3.13
.PHONY: docs-install
docs-install: 										## Install docs dependencies
	@echo "=> Installing documentation dependencies"
	@uv sync --python 3.12 --group docs
	@echo "=> Installed documentation dependencies"
docs-clean: 										## Dump the existing built docs
	@echo "=> Cleaning documentation build assets"
	@rm -rf docs/_build
	@echo "=> Removed existing documentation build assets"
docs-serve: docs-clean 								## Serve the docs locally
	@echo "=> Serving documentation"
	uv run --python 3.12 sphinx-autobuild docs docs/_build/ -j auto --watch litestar --watch docs --watch tests --watch CONTRIBUTING.rst --open-browser --port=0
docs: docs-clean 									## Dump the existing built docs and rebuild them
	@echo "=> Building documentation"
	@uv run --python 3.12 sphinx-build -M html docs docs/_build/ -E -a -j auto -W --keep-going
.PHONY: docs-linkcheck
docs-linkcheck: 									## Run the link check on the docs
	@uv run --python 3.12 sphinx-build -b linkcheck ./docs ./docs/_build -D linkcheck_ignore='http://.*','https://.*'
.PHONY: docs-linkcheck-full
docs-linkcheck-full: 									## Run the full link check on the docs
	@uv run --python 3.12 sphinx-build -b linkcheck ./docs ./docs/_build -D linkcheck_anchors=0
                                                                                                     litestar-2.18.0/README.md                                                                           0000664 0000000 0000000 00000314764 15070515525 0014734 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        
  
   
   
  
| Project   |     | Status                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|-----------|:----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| CI/CD     |     | [](https://github.com/litestar-org/litestar/actions/workflows/publish.yml) [](https://github.com/litestar-org/litestar/actions/workflows/ci.yml) [](https://github.com/litestar-org/litestar/actions/workflows/docs.yml)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Quality   |     | [](https://codecov.io/github/litestar-org/litestar)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Package   |     | [](https://badge.fury.io/py/litestar)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Community |     | [](https://reddit.com/r/litestarapi) [](https://discord.gg/litestar) [](https://matrix.to/#/#litestar:matrix.org) [](https://blog.litestar.dev) [](https://twitter.com/LitestarAPI) [](https://blog.litestar.dev)                                                                                                                                                                                                                          |
| Meta      |     | [](https://github.com/litestar-org/litestar) [](https://github.com/python/mypy) [](https://spdx.org/licenses/) [](https://github.com/sponsors/litestar-org) [](https://github.com/astral-sh/ruff) [](https://github.com/psf/black) [](#contributors-) |
Litestar is a powerful, flexible yet opinionated ASGI framework, focused on
building APIs. It offers high-performance data validation, dependency injection,
first-class ORM integration, authorization primitives, a rich plugin API, middleware,
and much more that's needed to get applications up and running.
Check out the [documentation 📚](https://docs.litestar.dev/) for a detailed overview of
its features!
Additionally, the [Litestar fullstack repository](https://github.com/litestar-org/litestar-fullstack)
can give you a good impression how a fully fledged Litestar application may look.
Table of Contents
- [Installation](#installation)
  - [Quick Start](#quick-start)
- [Core Features](#core-features)
  - [Example Applications](#example-applications)
- [Features](#features)
  - [Class-based Controllers](#class-based-controllers)
  - [Data Parsing, Type Hints, and Msgspec](#data-parsing-type-hints-and-msgspec)
  - [Plugin System, ORM support, and DTOs](#plugin-system-orm-support-and-dtos)
  - [OpenAPI](#openapi)
  - [Dependency Injection](#dependency-injection)
  - [Middleware](#middleware)
  - [Route Guards](#route-guards)
  - [Request Life Cycle Hooks](#request-life-cycle-hooks)
- [Performance](#performance)
- [Contributing](#contributing)
 
## Installation
```shell
pip install litestar
```
or to include the CLI and a server (uvicorn) for running your application:
```shell
pip install 'litestar[standard]'
```
## Quick Start
```python title="app.py"
from litestar import Litestar, get
@get("/")
async def hello_world() -> dict[str, str]:
    """Keeping the tradition alive with hello world."""
    return {"hello": "world"}
app = Litestar(route_handlers=[hello_world])
```
And run it with
```bash
litestar run
```
## Core Features
- [Class based controllers](#class-based-controllers)
- [Dependency Injection](#dependency-injection)
- [Layered Middleware](#middleware)
- [Plugin System](#plugin-system-orm-support-and-dtos)
- [OpenAPI 3.1 schema generation](#openapi)
- [Life Cycle Hooks](#request-life-cycle-hooks)
- [Route Guards based Authorization](#route-guards)
- Support for `dataclasses`, `TypedDict`, [`msgspec`](https://jcristharif.com/msgspec/), [pydantic version 1 and version 2 (even within the same application)](https://docs.pydantic.dev/latest/) and [(c)attrs](https://catt.rs/en/stable/)
- Layered parameter declaration
- Support for [RFC 9457](https://datatracker.ietf.org/doc/html/rfc9457) standardized "Problem Detail" error responses
- [Automatic API documentation with](#redoc-swagger-ui-and-stoplight-elements-api-documentation):
  - [Scalar](https://github.com/scalar/scalar/)
  - [RapiDoc](https://github.com/rapi-doc/RapiDoc)
  - [Redoc](https://github.com/Redocly/redoc)
  - [Stoplight Elements](https://github.com/stoplightio/elements)
  - [Swagger-UI](https://swagger.io/tools/swagger-ui/)
- [Trio](https://trio.readthedocs.io/en/stable/) support (built-in, via [AnyIO](https://anyio.readthedocs.io/))
- Ultra-fast validation, serialization and deserialization using [msgspec](https://github.com/jcrist/msgspec)
- [SQLAlchemy integration](https://docs.advanced-alchemy.litestar.dev/latest/)
## Example Applications
Pre-built Example Apps
- [litestar-hello-world](https://github.com/litestar-org/litestar-hello-world): A bare-minimum application setup. Great
for testing and POC work.
- [litestar-fullstack](https://github.com/litestar-org/litestar-fullstack): A reference application that contains most of the boilerplate required for a web application.
  It features a Litestar app configured with best practices, SQLAlchemy 2.0 and SAQ, a frontend integrated with Vitejs and Jinja2 templates, Docker, and more. Like all
  Litestar projects, this application is open to contributions, big and small.
 
## Sponsors
Litestar is an open-source project, and we enjoy the support of our sponsors to help fund the exciting
work we do.
A **huge** thanks to our sponsors:
[//]: # "Note to maintainers: Highest sponsors first; no more than 3 per row - create new div if needed"
 
 Check out our sponsors in the docs
If you would like to support the work that we do please consider [becoming a sponsor][sponsor-polar]
via [Polar.sh][sponsor-polar] (preferred), [GitHub][sponsor-github] or [Open Collective][sponsor-oc].
Also, exclusively with [Polar][sponsor-polar], you can engage in pledge-based sponsorships.
[sponsor-github]: https://github.com/sponsors/litestar-org
[sponsor-oc]: https://opencollective.com/litestar
[sponsor-polar]: https://polar.sh/litestar-org
## Features
### Class-based Controllers
While supporting function-based route handlers, Litestar also supports and promotes python OOP using class based
controllers:
Check out our sponsors in the docs
If you would like to support the work that we do please consider [becoming a sponsor][sponsor-polar]
via [Polar.sh][sponsor-polar] (preferred), [GitHub][sponsor-github] or [Open Collective][sponsor-oc].
Also, exclusively with [Polar][sponsor-polar], you can engage in pledge-based sponsorships.
[sponsor-github]: https://github.com/sponsors/litestar-org
[sponsor-oc]: https://opencollective.com/litestar
[sponsor-polar]: https://polar.sh/litestar-org
## Features
### Class-based Controllers
While supporting function-based route handlers, Litestar also supports and promotes python OOP using class based
controllers:
Example for class-based controllers
```python title="my_app/controllers/user.py"
from typing import List, Optional
from datetime import datetime
from litestar import Controller, get, post, put, patch, delete
from litestar.dto import DTOData
from pydantic import UUID4
from my_app.models import User, PartialUserDTO
class UserController(Controller):
    path = "/users"
    @post()
    async def create_user(self, data: User) -> User: ...
    @get()
    async def list_users(self) -> List[User]: ...
    @get(path="/{date:int}")
    async def list_new_users(self, date: datetime) -> List[User]: ...
    @patch(path="/{user_id:uuid}", dto=PartialUserDTO)
    async def partial_update_user(
        self, user_id: UUID4, data: DTOData[PartialUserDTO]
    ) -> User: ...
    @put(path="/{user_id:uuid}")
    async def update_user(self, user_id: UUID4, data: User) -> User: ...
    @get(path="/{user_name:str}")
    async def get_user_by_name(self, user_name: str) -> Optional[User]: ...
    @get(path="/{user_id:uuid}")
    async def get_user(self, user_id: UUID4) -> User: ...
    @delete(path="/{user_id:uuid}")
    async def delete_user(self, user_id: UUID4) -> None: ...
```
 
### Data Parsing, Type Hints, and Msgspec
Litestar is rigorously typed, and it enforces typing. For example, if you forget to type a return value for a route
handler, an exception will be raised. The reason for this is that Litestar uses typing data to generate OpenAPI specs,
as well as to validate and parse data. Thus, typing is essential to the framework.
Furthermore, Litestar allows extending its support using plugins.
### Plugin System, ORM support, and DTOs
Litestar has a plugin system that allows the user to extend serialization/deserialization, OpenAPI generation, and other
features.
It ships with a builtin plugin for SQL Alchemy, which allows the user to use SQLAlchemy declarative classes "natively"
i.e., as type parameters that will be serialized/deserialized and to return them as values from route
handlers.
Litestar also supports the programmatic creation of DTOs with a `DTOFactory` class, which also supports the use of
plugins.
### OpenAPI
Litestar has custom logic to generate OpenAPI 3.1.0 schema, include optional generation of examples using the
[`polyfactory`](https://pypi.org/project/polyfactory/) library.
#### ReDoc, Swagger-UI and Stoplight Elements API Documentation
Litestar serves the documentation from the generated OpenAPI schema with:
- [ReDoc](https://redoc.ly/)
- [Swagger-UI](https://swagger.io/tools/swagger-ui/)
- [Stoplight Elements](https://github.com/stoplightio/elements)
- [RapiDoc](https://rapidocweb.com/)
All these are available and enabled by default.
### Dependency Injection
Litestar has a simple but powerful DI system inspired by pytest. You can define named dependencies - sync or async - at
different levels of the application, and then selective use or overwrite them.
Example for DI
```python
from litestar import Litestar, get
from litestar.di import Provide
async def my_dependency() -> str: ...
@get("/")
async def index(injected: str) -> str:
    return injected
app = Litestar([index], dependencies={"injected": Provide(my_dependency)})
```
 
### Middleware
Litestar supports typical ASGI middleware and ships with middlewares to handle things such as
- CORS
- CSRF
- Rate limiting
- GZip and Brotli compression
- Client- and server-side sessions
### Route Guards
Litestar has an authorization mechanism called `guards`, which allows the user to define guard functions at different
level of the application (app, router, controller etc.) and validate the request before hitting the route handler
function.
Example for route guards
```python
from litestar import Litestar, get
from litestar.connection import ASGIConnection
from litestar.handlers.base import BaseRouteHandler
from litestar.exceptions import NotAuthorizedException
async def is_authorized(connection: ASGIConnection, handler: BaseRouteHandler) -> None:
    # validate authorization
    # if not authorized, raise NotAuthorizedException
    raise NotAuthorizedException()
@get("/", guards=[is_authorized])
async def index() -> None: ...
app = Litestar([index])
```
 
### Request Life Cycle Hooks
Litestar supports request life cycle hooks, similarly to Flask - i.e. `before_request` and `after_request`
## Performance
Litestar is fast. It is on par with, or significantly faster than comparable ASGI frameworks.
You can see and run the benchmarks [here](https://github.com/litestar-org/api-performance-tests),
or read more about it [here](https://docs.litestar.dev/latest/benchmarks) in our documentation.
## Contributing
Litestar is open to contributions big and small. You can always [join our discord](https://discord.gg/litestar) server
or [join our Matrix](https://matrix.to/#/#litestar:matrix.org) space
to discuss contributions and project maintenance. For guidelines on how to contribute, please
see [the contribution guide](CONTRIBUTING.rst).
## Contributors ✨
Thanks goes to these wonderful people:
Emoji Key 
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification.
Contributions of any kind welcome!
 
            litestar-2.18.0/codecov.yml                                                                         0000664 0000000 0000000 00000000255 15070515525 0015605 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        coverage:
  status:
    project:
      default:
        target: auto
        threshold: 0.1%
    patch:
      default:
        target: auto
comment:
  require_changes: true
                                                                                                                                                                                                                                                                                                                                                   litestar-2.18.0/docs/                                                                               0000775 0000000 0000000 00000000000 15070515525 0014366 5                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        litestar-2.18.0/docs/PYPI_README.md                                                                 0000664 0000000 0000000 00000046602 15070515525 0016516 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        
   
| Project   |     | Status                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|-----------|:----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| CI/CD     |     | [](https://github.com/litestar-org/litestar/actions/workflows/publish.yml) [](https://github.com/litestar-org/litestar/actions/workflows/ci.yml) [](https://github.com/litestar-org/litestar/actions/workflows/docs.yml)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Quality   |     | [](https://codecov.io/github/litestar-org/litestar)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Package   |     | [](https://badge.fury.io/py/litestar)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Community |     | [](https://reddit.com/r/litestarapi) [](https://discord.gg/litestar) [](https://matrix.to/#/#litestar:matrix.org) [](https://blog.litestar.dev) [](https://twitter.com/LitestarAPI) [](https://blog.litestar.dev)                                                                                                                                                                                                                          |
| Meta      |     | [](https://github.com/litestar-org/litestar) [](https://github.com/python/mypy) [](https://spdx.org/licenses/) [](https://github.com/sponsors/litestar-org) [](https://github.com/astral-sh/ruff) [](https://github.com/psf/black) [](#contributors-) |
Litestar is a powerful, flexible yet opinionated ASGI framework, focused on
building APIs. It offers high-performance data validation, dependency injection,
first-class ORM integration, authorization primitives, a rich plugin API, middleware,
and much more that's needed to get applications up and running.
Check out the [documentation 📚](https://docs.litestar.dev/) for a detailed overview of
its features!
Additionally, the [Litestar fullstack repository](https://github.com/litestar-org/litestar-fullstack)
can give you a good impression how a fully fledged Litestar application may look.
Table of Contents
- [Installation](#installation)
  - [Quick Start](#quick-start)
- [Core Features](#core-features)
  - [Example Applications](#example-applications)
- [Features](#features)
  - [Class-based Controllers](#class-based-controllers)
  - [Data Parsing, Type Hints, and Msgspec](#data-parsing-type-hints-and-msgspec)
  - [Plugin System, ORM support, and DTOs](#plugin-system-orm-support-and-dtos)
  - [OpenAPI](#openapi)
  - [Dependency Injection](#dependency-injection)
  - [Middleware](#middleware)
  - [Route Guards](#route-guards)
  - [Request Life Cycle Hooks](#request-life-cycle-hooks)
- [Performance](#performance)
- [Contributing](#contributing)
 
## Installation
```shell
pip install litestar
```
or to include the CLI and a server (uvicorn) for running your application:
```shell
pip install 'litestar[standard]'
```
## Quick Start
```python title="app.py"
from litestar import Litestar, get
@get("/")
async def hello_world() -> dict[str, str]:
    """Keeping the tradition alive with hello world."""
    return {"hello": "world"}
app = Litestar(route_handlers=[hello_world])
```
And run it with
```bash
litestar run
```
## Core Features
- [Class based controllers](#class-based-controllers)
- [Dependency Injection](#dependency-injection)
- [Layered Middleware](#middleware)
- [Plugin System](#plugin-system-orm-support-and-dtos)
- [OpenAPI 3.1 schema generation](#openapi)
- [Life Cycle Hooks](#request-life-cycle-hooks)
- [Route Guards based Authorization](#route-guards)
- Support for `dataclasses`, `TypedDict`, [`msgspec`](https://jcristharif.com/msgspec/), [pydantic version 1 and version 2 (even within the same application)](https://docs.pydantic.dev/latest/) and [(c)attrs](https://catt.rs/en/stable/)
- Layered parameter declaration
- Support for [RFC 9457](https://datatracker.ietf.org/doc/html/rfc9457) standardized "Problem Detail" error responses
- [Automatic API documentation with](#redoc-swagger-ui-and-stoplight-elements-api-documentation):
  - [Scalar](https://github.com/scalar/scalar/)
  - [RapiDoc](https://github.com/rapi-doc/RapiDoc)
  - [Redoc](https://github.com/Redocly/redoc)
  - [Stoplight Elements](https://github.com/stoplightio/elements)
  - [Swagger-UI](https://swagger.io/tools/swagger-ui/)
- [Trio](https://trio.readthedocs.io/en/stable/) support (built-in, via [AnyIO](https://anyio.readthedocs.io/))
- Ultra-fast validation, serialization and deserialization using [msgspec](https://github.com/jcrist/msgspec)
- [SQLAlchemy integration](https://docs.advanced-alchemy.litestar.dev/latest/)
## Example Applications
Pre-built Example Apps
- [litestar-hello-world](https://github.com/litestar-org/litestar-hello-world): A bare-minimum application setup. Great
for testing and POC work.
- [litestar-fullstack](https://github.com/litestar-org/litestar-fullstack): A reference application that contains most of the boilerplate required for a web application.
  It features a Litestar app configured with best practices, SQLAlchemy 2.0 and SAQ, a frontend integrated with Vitejs and Jinja2 templates, Docker, and more. Like all
  Litestar projects, this application is open to contributions, big and small.
 
## Sponsors
Litestar is an open-source project, and we enjoy the support of our sponsors to help fund the exciting
work we do.
A **huge** thanks to our sponsors:
[//]: # "Note to maintainers: Highest sponsors first; no more than 3 per row - create new div if needed"
 
 Check out our sponsors in the docs
If you would like to support the work that we do please consider [becoming a sponsor][sponsor-polar]
via [Polar.sh][sponsor-polar] (preferred), [GitHub][sponsor-github] or [Open Collective][sponsor-oc].
Also, exclusively with [Polar][sponsor-polar], you can engage in pledge-based sponsorships.
[sponsor-github]: https://github.com/sponsors/litestar-org
[sponsor-oc]: https://opencollective.com/litestar
[sponsor-polar]: https://polar.sh/litestar-org
## Features
### Class-based Controllers
While supporting function-based route handlers, Litestar also supports and promotes python OOP using class based
controllers:
Check out our sponsors in the docs
If you would like to support the work that we do please consider [becoming a sponsor][sponsor-polar]
via [Polar.sh][sponsor-polar] (preferred), [GitHub][sponsor-github] or [Open Collective][sponsor-oc].
Also, exclusively with [Polar][sponsor-polar], you can engage in pledge-based sponsorships.
[sponsor-github]: https://github.com/sponsors/litestar-org
[sponsor-oc]: https://opencollective.com/litestar
[sponsor-polar]: https://polar.sh/litestar-org
## Features
### Class-based Controllers
While supporting function-based route handlers, Litestar also supports and promotes python OOP using class based
controllers:
Example for class-based controllers
```python title="my_app/controllers/user.py"
from typing import List, Optional
from datetime import datetime
from litestar import Controller, get, post, put, patch, delete
from litestar.dto import DTOData
from pydantic import UUID4
from my_app.models import User, PartialUserDTO
class UserController(Controller):
    path = "/users"
    @post()
    async def create_user(self, data: User) -> User: ...
    @get()
    async def list_users(self) -> List[User]: ...
    @get(path="/{date:int}")
    async def list_new_users(self, date: datetime) -> List[User]: ...
    @patch(path="/{user_id:uuid}", dto=PartialUserDTO)
    async def partial_update_user(
        self, user_id: UUID4, data: DTOData[PartialUserDTO]
    ) -> User: ...
    @put(path="/{user_id:uuid}")
    async def update_user(self, user_id: UUID4, data: User) -> User: ...
    @get(path="/{user_name:str}")
    async def get_user_by_name(self, user_name: str) -> Optional[User]: ...
    @get(path="/{user_id:uuid}")
    async def get_user(self, user_id: UUID4) -> User: ...
    @delete(path="/{user_id:uuid}")
    async def delete_user(self, user_id: UUID4) -> None: ...
```
 
### Data Parsing, Type Hints, and Msgspec
Litestar is rigorously typed, and it enforces typing. For example, if you forget to type a return value for a route
handler, an exception will be raised. The reason for this is that Litestar uses typing data to generate OpenAPI specs,
as well as to validate and parse data. Thus, typing is essential to the framework.
Furthermore, Litestar allows extending its support using plugins.
### Plugin System, ORM support, and DTOs
Litestar has a plugin system that allows the user to extend serialization/deserialization, OpenAPI generation, and other
features.
It ships with a builtin plugin for SQL Alchemy, which allows the user to use SQLAlchemy declarative classes "natively"
i.e., as type parameters that will be serialized/deserialized and to return them as values from route
handlers.
Litestar also supports the programmatic creation of DTOs with a `DTOFactory` class, which also supports the use of
plugins.
### OpenAPI
Litestar has custom logic to generate OpenAPI 3.1.0 schema, include optional generation of examples using the
[`polyfactory`](https://pypi.org/project/polyfactory/) library.
#### ReDoc, Swagger-UI and Stoplight Elements API Documentation
Litestar serves the documentation from the generated OpenAPI schema with:
- [ReDoc](https://redoc.ly/)
- [Swagger-UI](https://swagger.io/tools/swagger-ui/)
- [Stoplight Elements](https://github.com/stoplightio/elements)
- [RapiDoc](https://rapidocweb.com/)
All these are available and enabled by default.
### Dependency Injection
Litestar has a simple but powerful DI system inspired by pytest. You can define named dependencies - sync or async - at
different levels of the application, and then selective use or overwrite them.
Example for DI
```python
from litestar import Litestar, get
from litestar.di import Provide
async def my_dependency() -> str: ...
@get("/")
async def index(injected: str) -> str:
    return injected
app = Litestar([index], dependencies={"injected": Provide(my_dependency)})
```
 
### Middleware
Litestar supports typical ASGI middleware and ships with middlewares to handle things such as
- CORS
- CSRF
- Rate limiting
- GZip and Brotli compression
- Client- and server-side sessions
### Route Guards
Litestar has an authorization mechanism called `guards`, which allows the user to define guard functions at different
level of the application (app, router, controller etc.) and validate the request before hitting the route handler
function.
Example for route guards
```python
from litestar import Litestar, get
from litestar.connection import ASGIConnection
from litestar.handlers.base import BaseRouteHandler
from litestar.exceptions import NotAuthorizedException
async def is_authorized(connection: ASGIConnection, handler: BaseRouteHandler) -> None:
    # validate authorization
    # if not authorized, raise NotAuthorizedException
    raise NotAuthorizedException()
@get("/", guards=[is_authorized])
async def index() -> None: ...
app = Litestar([index])
```
 
### Request Life Cycle Hooks
Litestar supports request life cycle hooks, similarly to Flask - i.e. `before_request` and `after_request`
## Performance
Litestar is fast. It is on par with, or significantly faster than comparable ASGI frameworks.
You can see and run the benchmarks [here](https://github.com/litestar-org/api-performance-tests),
or read more about it [here](https://docs.litestar.dev/latest/benchmarks) in our documentation.
## Contributing
Litestar is open to contributions big and small. You can always [join our discord](https://discord.gg/litestar) server
or [join our Matrix](https://matrix.to/#/#litestar:matrix.org) space
to discuss contributions and project maintenance. For guidelines on how to contribute, please
see [the contribution guide](CONTRIBUTING.rst).
                                                                                                                              litestar-2.18.0/docs/_static/                                                                       0000775 0000000 0000000 00000000000 15070515525 0016014 5                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        litestar-2.18.0/docs/_static/favicon.png                                                            0000664 0000000 0000000 00000017005 15070515525 0020152 0                                                                                                    ustar 00root                            root                            0000000 0000000                                                                                                                                                                        PNG
   
IHDR         >a   	pHYs    [M_p   tEXtSoftware www.inkscape.org<  IDATx}y\{UqC@525Rn)صluju+"eeb*nWSE3pef3z_ʙg<=<#д} x	V
@^sA0N= m#A2@ @gD%[eR
iTwA.6ƁV $ w D ZY `] tsJ $= <  @+m[F ;A( hz$x@6@>` 6 H%0@;g` m H6Ɨt#==(++^ZZ
iH5k-ZYl͚5k	 PD`X"B#"t H6
s o2p1:t~
GCzz:L4i;sN{wt~:t `OtV7AhaodHR--ă9s,sO:CB&˯156`\DW$ɋj3l构Θ,ŋP$+܌>.XҴ
2ɉz -fTիl:3=YPP~;D u#4[,Zd{t4