Skip to content

Commit

Permalink
Add version number to Python code comments (#1511)
Browse files Browse the repository at this point in the history
* feat: Add sqlc version to generated Python code
* feat: Add source file to Python code comments
  • Loading branch information
kyleconroy committed Mar 28, 2022
1 parent 582ba6e commit 51f1ba4
Show file tree
Hide file tree
Showing 14 changed files with 60 additions and 20 deletions.
2 changes: 2 additions & 0 deletions examples/python/src/authors/models.py
@@ -1,4 +1,6 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
import dataclasses
from typing import Optional

Expand Down
3 changes: 3 additions & 0 deletions examples/python/src/authors/query.py
@@ -1,4 +1,7 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
# source: query.sql
from typing import AsyncIterator, Iterator, Optional

import sqlalchemy
Expand Down
2 changes: 2 additions & 0 deletions examples/python/src/booktest/models.py
@@ -1,4 +1,6 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
import dataclasses
import datetime
import enum
Expand Down
3 changes: 3 additions & 0 deletions examples/python/src/booktest/query.py
@@ -1,4 +1,7 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
# source: query.sql
import dataclasses
import datetime
from typing import AsyncIterator, List, Optional
Expand Down
2 changes: 2 additions & 0 deletions examples/python/src/jets/models.py
@@ -1,4 +1,6 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
import dataclasses


Expand Down
3 changes: 3 additions & 0 deletions examples/python/src/jets/query-building.py
@@ -1,4 +1,7 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
# source: query-building.sql
from typing import AsyncIterator, Optional

import sqlalchemy
Expand Down
3 changes: 3 additions & 0 deletions examples/python/src/ondeck/city.py
@@ -1,4 +1,7 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
# source: city.sql
from typing import AsyncIterator, Optional

import sqlalchemy
Expand Down
2 changes: 2 additions & 0 deletions examples/python/src/ondeck/models.py
@@ -1,4 +1,6 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
import dataclasses
import datetime
import enum
Expand Down
3 changes: 3 additions & 0 deletions examples/python/src/ondeck/venue.py
@@ -1,4 +1,7 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
# source: venue.sql
import dataclasses
from typing import AsyncIterator, List, Optional

Expand Down
47 changes: 27 additions & 20 deletions internal/codegen/python/gen.go
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/kyleconroy/sqlc/internal/codegen/sdk"
"github.com/kyleconroy/sqlc/internal/inflection"
"github.com/kyleconroy/sqlc/internal/info"
"github.com/kyleconroy/sqlc/internal/metadata"
"github.com/kyleconroy/sqlc/internal/plugin"
pyast "github.com/kyleconroy/sqlc/internal/python/ast"
Expand Down Expand Up @@ -481,6 +482,30 @@ func buildQueries(req *plugin.CodeGenRequest, structs []Struct) ([]Query, error)
return qs, nil
}

func moduleNode(source string) *pyast.Module {
mod := &pyast.Module{
Body: []*pyast.Node{
poet.Comment(
"Code generated by sqlc. DO NOT EDIT.",
),
poet.Comment(
"versions:",
),
poet.Comment(
" sqlc " + info.Version,
),
},
}
if source != "" {
mod.Body = append(mod.Body,
poet.Comment(
"source: "+source,
),
)
}
return mod
}

func importNode(name string) *pyast.Node {
return &pyast.Node{
Node: &pyast.Node_Import{
Expand Down Expand Up @@ -636,18 +661,7 @@ func buildImportGroup(specs map[string]importSpec) *pyast.Node {
}

func buildModelsTree(ctx *pyTmplCtx, i *importer) *pyast.Node {
mod := &pyast.Module{
Body: []*pyast.Node{
{
Node: &pyast.Node_Comment{
Comment: &pyast.Comment{
Text: "Code generated by sqlc. DO NOT EDIT.",
},
},
},
},
}

mod := moduleNode("")
std, pkg := i.modelImportSpecs()
mod.Body = append(mod.Body, buildImportGroup(std), buildImportGroup(pkg))

Expand Down Expand Up @@ -779,14 +793,7 @@ func asyncQuerierClassDef() *pyast.ClassDef {
}

func buildQueryTree(ctx *pyTmplCtx, i *importer, source string) *pyast.Node {
mod := &pyast.Module{
Body: []*pyast.Node{
poet.Comment(
"Code generated by sqlc. DO NOT EDIT.",
),
},
}

mod := moduleNode(source)
std, pkg := i.queryImportSpecs(source)
mod.Body = append(mod.Body, buildImportGroup(std), buildImportGroup(pkg))
mod.Body = append(mod.Body, &pyast.Node{
Expand Down
@@ -1,4 +1,6 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
import dataclasses


Expand Down
@@ -1,4 +1,7 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
# source: query.sql
import sqlalchemy
import sqlalchemy.ext.asyncio

Expand Down
@@ -1,4 +1,6 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
import dataclasses


Expand Down
@@ -1,4 +1,7 @@
# Code generated by sqlc. DO NOT EDIT.
# versions:
# sqlc v1.12.0
# source: query.sql
import sqlalchemy
import sqlalchemy.ext.asyncio

Expand Down

0 comments on commit 51f1ba4

Please sign in to comment.