Re: [sqlalchemy] generate top-level python code for an alembic revision from render_item

2020-05-06 Thread Adrian
 Works great, thanks!

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/8211829c-bf2c-4675-b9e7-7d728fad7c47%40googlegroups.com.


Re: [sqlalchemy] generate top-level python code for an alembic revision from render_item

2020-05-05 Thread Mike Bayer
it's pretty doable if you add a new ${thing} to your mako template. getting a 
value in there requires a trick, there's an example of it here: 
https://github.com/sqlalchemy/alembic/issues/686#issuecomment-616828129

which is to put a dictionary inside of another dictionary and pass that as 
"template_args" when you context.configure(); suppose you send it as 
template_args={"my_dictionary": {}}. then anywhere you are, in a render hook, 
in env.py, whatever, put whatever you want in that dictionary. then reference 
in your template as ${my_dictionary['some_value']} .



On Tue, May 5, 2020, at 5:24 PM, Adrian wrote:
> I have a custom type implementing enums (no idea if there's something better 
> now, but it's used in many places so
> replacing it is not an option atm). Currently I'm using render_item to simply 
> import the type and the enum and pass the
> enum to the type and it works fine.
> 
> However, in the alembic revision I'd prefer to define a copy of the enum how 
> it looked like at generation time since it may
> change and in that case running an older revision's upgrade would be broken 
> as it would generate the column based on
> a different enum.
> 
> In any case, I would like to have the enum definition inside my revision 
> file, either top-level or inside `upgrade`. But for neither
> of these options I found any way to do it properly as there doesn't seem to 
> be any way to provide code to be included in
> `upgrade` or variables for the mako template context used to render the 
> revision file.
> 
> I managed to do it using this **incredibly ugly** workaround, but I really 
> hope there's some better way... so if there is one, please
> let me know. Because not adding this abomination in my codebase would be 
> great:
> https://gist.github.com/ThiefMaster/3ad2a35b531ff5cada7d2232333619fa
> 
> Thanks for any help/suggestions!
> 

> --
>  SQLAlchemy - 
>  The Python SQL Toolkit and Object Relational Mapper
> 
> http://www.sqlalchemy.org/
> 
>  To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
>  --- 
>  You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
>  To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+unsubscr...@googlegroups.com.
>  To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/fe2d88a4-f40d-411e-941f-44ceff7fdc9d%40googlegroups.com
>  
> .

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/65c1264f-158b-41c9-92b1-95ef4d29ee61%40www.fastmail.com.


[sqlalchemy] generate top-level python code for an alembic revision from render_item

2020-05-05 Thread Adrian
I have a custom type implementing enums (no idea if there's something 
better now, but it's used in many places so
replacing it is not an option atm). Currently I'm using render_item to 
simply import the type and the enum and pass the
enum to the type and it works fine.

However, in the alembic revision I'd prefer to define a copy of the enum 
how it looked like at generation time since it may
change and in that case running an older revision's upgrade would be broken 
as it would generate the column based on
a different enum.

In any case, I would like to have the enum definition inside my revision 
file, either top-level or inside `upgrade`. But for neither
of these options I found any way to do it properly as there doesn't seem to 
be any way to provide code to be included in
`upgrade` or variables for the mako template context used to render the 
revision file.

I managed to do it using this **incredibly ugly** workaround, but I really 
hope there's some better way... so if there is one, please
let me know. Because not adding this abomination in my codebase would be 
great:
https://gist.github.com/ThiefMaster/3ad2a35b531ff5cada7d2232333619fa

Thanks for any help/suggestions!

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/fe2d88a4-f40d-411e-941f-44ceff7fdc9d%40googlegroups.com.