Which assemblies will be recompiled if one script changed in Unity?

In Unity, assembly can be used to accelerate compiling.
I used to believe that if one script changed, only its containing assembly is recompiled.

I did some experiments today, and find that not only the containing assembly is recompiled.
For example, Assembly-CSharp.dll is recompiled most of the time.

Assume script ‘a’ belongs to assembly ‘A’.
Based on my experiments, adding/deleting public field or method, assemblies that reference ‘A’ will be recompiled. Modifying content of a public method will not cause referencing assemblies to be recompiled. adding/deleting/modifying private things will not cause referencing assemblies to be recompiled either.

So, which assemblies will be recompiled if I change one script in Unity?
Is there any article or book about this?

Calling Python Google Cloud Function via HTTP

I’m trying to call my Google Cloud Function via HTTP to get a response back in my browser. I expect a list of text, but am getting Error: could not handle the request.

Here’s our code in the main.py source:

import openai

def gptinput(number,question,q_fc='q'):
    #user_information = firebase.FirebaseReader()
    openai.api_key = "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"
quest = "create '"+str(number)+ "' questions related to '"+question+"' with 4 options and print answer as ('ANSWER') and seperate each question with '/////'"
# Generate text using GPT-3
output_lis = []
while(len(output_lis)<number):

  response = openai.Completion.create(
      engine="text-davinci-002",
      prompt= quest,
      max_tokens=2048,
      n=1,
      stop=None,
      temperature=0.5
      )
      # Extract the generated text
  
  generated_text = response["choices"][0]["text"]
  ans = generated_text.split("/////")
  for i in ans:
    q = i.split('?')
    options= q[1][0:q[1].find("ANSWER")]
    answer = q[1][q[1].find("ANSWER")+6:]
    answer = answer.strip()
    
    option_lis = options.split('\n')
    option_lis.append(answer)
    
    ques = q[0].strip()
    option_lis = [s for s in option_lis if (s!='' or s!="")]
    option_lis1 = [s for s in option_lis if (s!="\n" )]

    output_lis.append({ques:option_lis1})
    
return output_lis[0:number]
  `