Skip to content

Instantly share code, notes, and snippets.

View gcrsaldanha's full-sized avatar
🏠
Working from home

Gabriel Saldanha gcrsaldanha

🏠
Working from home
View GitHub Profile
@gcrsaldanha
gcrsaldanha / 2025-11-18 - Audit Confirmation Questions and Responses Architecture.md
Created November 18, 2025 18:38
Audit Confirmation Questions and Responses Architecture - Cross-service documentation for fund-admin and carta-web integration

Audit Confirmation Questions and Responses Architecture

Last Updated: 2025-11-18 Purpose: Document the audit confirmation workflow, question types, and cross-service integration for future modifications

Document Updates

  • Clarified distinction between base confirmation fields (structured form responses) vs audit questions (document uploads)
  • Added Mermaid sequence diagram showing complete cross-service event flow
  • Added dependencies diagram showing what models/events/services need updates
  • Updated step-by-step guide for adding optional structured fields (text, dates, decimals)
@gcrsaldanha
gcrsaldanha / mock-autospec-guide.md
Created November 4, 2025 16:30
Python Mock Safety: Always Use Autospec

Mock Safety with Autospec in Python Tests

Always use autospec=True or create_autospec() when mocking services, classes, or objects.

Quick Reference

# ❌ BAD: Mock allows non-existent methods
mock_service = Mock()
mock_service.get_user_data.return_value = {...} # Typo - no error!
@gcrsaldanha
gcrsaldanha / rfi-flow-diagram.md
Last active October 31, 2025 20:56
Request For Information (RFI) Flow Diagram

Request For Information (RFI) Flow Diagram

flowchart TD
    %% Actors
    Firm[Investment Firm]
    PoC[Point of Contact at PortCo]
    PortCo[Portfolio Company]
    Analyst[PI-HQ Analyst - Carta Staff]
@gcrsaldanha
gcrsaldanha / tdd_roteiro.md
Created April 2, 2024 20:13
Roteiro PythOnRio Abril - 2024 - Test Driven Development com Python/Django

Test Driven Development com Python e Django

É um negócio perigoso, Frodo, sair pela porta de casa. Você coloca um pé na estrada, e se você não se manter firme, não tem como saber para onde será levado.

Disclaimer

Esse roteiro é baseado no livro Test-Driven Development with Python de Harry Percival.

Objetivo

@gcrsaldanha
gcrsaldanha / cap1.md
Last active January 6, 2023 02:18
Livro de Python – Gists

Prefácio

Bem-vindo à minha série de artigos sobre programação com Python para iniciantes! Nesta série, vou te guiar através de conceitos de programação (utilizando Python) de modo que você consiga criar seus próprios programas!

Cada artigo (ou capítulo) foi escrito de modo que possa ser lido em poucos minutos, com alguns exercícios práticos no final. Além disso, o conteúdo é voltado para iniciantes na programação ou pessoas que nunca tiveram contato e querem aprender mais sobre programação. Portanto, não é necessário nenhum conhecimento prévio.

Sinta-se confortável para ler os capítulos da maneira que preferir, mas eles foram pensados para serem lidos diariamente, um capítulo por dia, de modo que não tome muito do seu tempo.

Se você não faz ideia do que é esse tal de "Python" ou "programação", pode ficar tranquilo(a)! No primeiro capítulo a gente vai falar sobre isso!

@gcrsaldanha
gcrsaldanha / cheatsheet.md
Last active November 19, 2022 13:53
PythOnRio – Novembro 2022 – Programação Assíncrona com Python Futures

Documentação completa: https://docs.python.org/3/library/concurrent.futures.html

Executor

  • def __init__(max_workers)
  • def map(func, *iterables)
    • similar ao map (built-in)
    • executa func de modo assíncrono sobre os iteráveis.
  • def shutdown(wait=True, *, cancel_futures=False)
  • wait: blocking vs non-blocking return (esperar todos os futuros pendentes terminarem).
@gcrsaldanha
gcrsaldanha / front.js
Created November 17, 2022 17:59
Essa é uma descrição qualquer, só para dar um exemplo
console.log("Pode ter mais de um arquivo por gist!!!")
@gcrsaldanha
gcrsaldanha / exemplo_datetime.py
Created March 17, 2022 15:48
Criando datetimes de 30 em 30 minutos
from datetime import datetime, timedelta
dt_inicio = datetime(2022, 3, 17, 9) # 09h00, 17 de Março de 2022
dt_fim = datetime(2022, 3, 17, 18) # 18h00, 17 de Março de 2022
delta = timedelta(minutes=30) # objeto timedelta de 30 minutos
dt = dt_inicio + delta
print(type(dt))
# <class 'datetime.datetime'>
print(dt)
@gcrsaldanha
gcrsaldanha / cupom.py
Created February 15, 2022 13:06
Validador de cupom – Exercício 4 módulo 4
valor_compra = float(input("Digite o valor da compra: \n"))
valor_frete = float(input("Digite o valor do frete: \n"))
cliente_cadastrado = input("O cliente é cadastrado? (s/n) \n")
cupom_pode_ser_utilizado = (valor_compra + valor_frete > 100) or (cliente_cadastrado == "s")
print(cupom_pode_ser_utilizado)