GitHunt
AT

AtelierArith/DocstringChef.jl

May I explain something?

DocstringChef.jl

This Julia package supports docstring generation or explaining code given the function or method definition.

Setup

⚠️ We strongly suggest setting up your API key as an ENV variable.

To confirm ENV["OPENAI_API_KEY"] is set properly, open Julia REPL in your terminal and run:

julia> using OpenAI

julia> function main()
               secret_key = ENV["OPENAI_API_KEY"]
               model = "gpt-4o-mini"
               prompt =  "Say \"this is a test\""

               r = create_chat(
                   secret_key,
                   model,
                   [Dict("role" => "user", "content"=> prompt)]
                 )
               println(r.response[:choices][begin][:message][:content])
       end
main (generic function with 1 method)

julia> main()
This is a test.

You can also use DotEnv.jl package.

julia> # store API key in `.env` in advance
julia> using DotEnv
julia> DotEnv.load!()
julia> @assert haskey(ENV, "OPENAI_API_KEY")

Clone our repository and resolve dependencies:

$ git clone https://github.com/AtelierArith/DocstringChef.jl.git
$ cd DocstringChef.jl
$ julia --project -e 'using Pkg; Pkg.instantiate()'

Usage

@explain macro

The @doc <expr> macro defined in the Base packages shows docstring for a given <expr>. Not all source codes provide docstrings.

The @explain macro provides a function to retrieve the source code, decode the source code using OpenAI's functions, and create a (yet another) docstring.

julia> @explain sin(1.0)
  sin(x::T) where T<:Union{Float32, Float64}

  Compute the sine of the input value x.

  The function calculates the sine of x using a specialized
  algorithm that optimizes performance for both Float32 and
  Float64 types. The computation handles various edge
  cases, such as very small input values, NaN, and
  infinity. For absolute values of x less than π/4, the
  function computes the sine directly. For larger values,
  it reduces the input using the periodicity of the sine
  function and computes the sine of the reduced value.

  Parameters
  ––––––––––

    •  x: A Float32 or Float64 value representing the
       angle in radians.

  Returns
  –––––––

    •  Returns the sine of the input value as a
       Float32 or Float64, depending on the input
       type.

    •  If x is NaN, the result will be NaN.

    •  If x is infinite, a domain error is raised.

  Examples
  ––––––––

  julia> sin(0.0)        # 0.0
  julia> sin/6)       # 0.5
  julia> sin/2)       # 1.0
  julia> sin(3π/2)      # -1.0

  Notes
  –––––

    •  The function optimizes performance for small
       values close to zero by returning x directly
       instead of calculating the sine.

    •  For large values of x, the function utilizes
       the periodicity of sine to reduce the input
       before calculation.

julia>

Languages

Julia100.0%

Contributors

Created November 29, 2024
Updated July 11, 2025
AtelierArith/DocstringChef.jl | GitHunt