In this script from one of the linux applications I use, I see words between the "@" sign such as @devel@, and @gtk_major_version@.
I would like to know what those are called, their functions in Python, and why the script has ".in" extension instead of ".py".
            Asked
            
        
        
            Active
            
        
            Viewed 370 times
        
    -1
            
            
         
    
    
        Anonumous Pomp
        
- 53
- 1
- 9
- 
                    1Possible duplicate of [What does the "at" (@) symbol do in Python?](https://stackoverflow.com/questions/6392739/what-does-the-at-symbol-do-in-python) – Kostas Charitidis Oct 08 '19 at 10:11
- 
                    4In this case, I don't think that '@' is used to make a decorator. Instead, it seems that the file is a template and @VARIABLE@ is made as reference to a variable defined elsewhere. – Stefano Fiorucci - anakin87 Oct 08 '19 at 10:14
- 
                    1This is not valid Python code. It is somehow preprocessed. The preprocessor uses these @...@ syntax. – Michael Butscher Oct 08 '19 at 10:15
- 
                    1Not sure if I'm reading the source code correctly, but it seems like the variables are defined [here](https://github.com/libratbag/piper/blob/d45b95b4339cd9ae2fd17dff5d0244e994189e51/meson.build). Seems to be related to the Meson Build System. – Imma Oct 08 '19 at 10:19
- 
                    @KostasCharitidis no that's at sign in the begining of the word, this is at sign surrounding a word – Anonumous Pomp Oct 08 '19 at 10:33
1 Answers
5
            As mentioned in the comments, this is not Python syntax.  Instead, the strings enclosed in @ are template variables that will be filled in by the Meson build system which is popular, e.g. with many projects that use GTK.
I this case the template will be used at build time to generate a script called just piper (with the .in removed) similarly to how autoconf generates files from templates, with the template variables replaced with values determined by the build system.
Using a build configure system to generate a Python script is slightly unusual but not at all unheard of either. I'm sure I've done the same before, albeit with autoconf.
 
    
    
        Iguananaut
        
- 21,810
- 5
- 50
- 63