# DuckDB : CLI et SQL
Document 1/2. Le document 2, « DuckDB embarqué : Python et dbt », présuppose celui-ci.
## Préambule
**Public visé.** Data engineer Python (uv, dbt, Snowflake, AWS) qui veut DuckDB en local pour explorer des fichiers, tester du SQL analytique et, plus tard, servir de cible dbt. Aucune connaissance préalable de DuckDB ; SQL analytique supposé acquis.
**Version vérifiée.** DuckDB **1.5.6** (CLI, Linux x86_64), le 5 octobre 2026. La branche 1.4 est la LTS. Les fonctionnalit# Cookiecutter cÎté concepteur
> Guide progressif pour **écrire, tester, distribuer et faire vivre** un template cookiecutter. Il suppose que vous savez générer un projet depuis un template (guide compagnon *Cookiecutter cÎté utilisateur, et cruft pour la suite*). Convention : un bloc de code est une séquence à exécuter telle quelle ; les alternatives sont dans des blocs séparés, chacun précédé de son cas d'usage. Vérifié contre la documentation de cookiecutter 2.7 et de cruft 2.15.
---
## So# This is the portable version
# It provides three separate layers of protection:
# 1. get_queryset() â hides staff/superusers.
# 2. has_change_permission() â blocks editing them even through a direct URL.
# 3. get_fieldsets() â hides is_staff and is_superuser when adding/editing users.
# Important:
# If the other project's CustomUserAdmin already overrides get_queryset(), has_change_permission(), or get_fieldsets(),
# don't add a second method with the same name. The security logic ne# Cookiecutter cÎté utilisateur, et cruft pour la suite
> Guide progressif pour **générer** un projet depuis un template cookiecutter, puis le **maintenir** à jour avec cruft quand le template évolue. Il ne traite pas de l'écriture de templates : c'est l'objet du guide compagnon *Cookiecutter cÎté concepteur*. Convention : un bloc de code est une séquence à exécuter telle quelle ; les alternatives sont dans des blocs séparés, chacun précédé de son cas d'usage. Vérifié contre cookiecutter 2.7 et# jq : tutoriel synthétique
> Guide progressif pour maĂźtriser `jq`, de la premiĂšre extraction au traitement de fichiers volumineux en passant par l'Ă©criture de filtres rĂ©utilisables. MĂȘme construction que les guides prĂ©cĂ©dents : **un bloc de code est une sĂ©quence Ă exĂ©cuter telle quelle**, chaque alternative a son bloc et son cas d'usage, chaque exemple montre sa sortie quand elle n'est pas Ă©vidente. Les exemples visent jq â„ 1.7 ; les diffĂ©rences avec 1.6 sont signalĂ©es. VĂ©rifiez avec `jq --vervar Sheet_ID = '1uKyjCIINSL8F9WeoaxZ8pBByR15F22Ep07vri-Bf9iY';
var Sheet_Name = 'All SN list';
function doGet(e){
return HtmlService.createTemplateFromFile('Index').evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
function submitData(obj){
var ws = SpreadsheetApp.openById(Sheet_ID);
var ss = ws.getSheetByName(Sheet_Name);
var data = "";
var flag = false;
// // Fetch all data at once
// var dataRange = ss.getRange(2, 1, ss.getLastRow() - 1,// Blinkbid â bidding & production management software for creative professionals
// (photographers, producers, filmmakers): quotes, production, invoices & payments.
// Website: https://blinkbid.com/# Dritto Salon
Dritto Salon is a top-rated beauty salon in San Francisco and San Rafael, California. They specialize in keratin hair treatments, hair extensions, and premium hair care services.
Visit [Dritto Salon](https://www.drittosalon.com/) to learn more and book your appointment./**
* @param {string} s
* @return {number}
*/
var scoreOfParentheses = function(s) {
const stack = [];
let score = 0;
for (const ch of s) {
if (ch === '(') {
// Save current level's score
stack.push(score);
// Start a new inner level
score = 0;
} else {
// If score is 0, we found "()"
// Otherwise, we found "(A)" => 2 * A
const innerScore = score === 0 ? 1 : score * 2;
/**
* @param {string} s
* @return {boolean}
*/
var /**
* @param {string} s
* @return {boolean}
*/
var checkValidString = function(s) {
// Range of possible unmatched '(' counts.
// low = minimum opens we could have
// high = maximum opens we could have
let low = 0;
let high = 0;
for (const ch of s) {
if (ch === '(') {
low++;
high++;
} else if (ch === ')') {
low--;
high--;
} else { // '*'
# uv : tutoriel synthétique
> Guide progressif pour maĂźtriser `uv`, le gestionnaire Python d'Astral. MĂȘme construction que les guides pytest et Ruff : des niveaux qui s'enchaĂźnent, des commandes Ă essayer, des recettes, un aide-mĂ©moire et un quiz. Les commandes sont valables pour uv â„ 0.5 ; vĂ©rifiez avec `uv --version`.
---
## Sommaire
0. [Ce qu'est uv](#0-ce-quest-uv)
1. [Niveau 1 â Installation et principes](#1-niveau-1--installation-et-principes)
2. [Niveau 2 â GĂ©rer les versions de Pytho# Ruff : tutoriel synthĂ©tique
> Guide progressif pour prendre en main `ruff`, du premier lancement Ă une configuration de projet maintenue. MĂȘme esprit que le guide pytest : chaque niveau s'appuie sur le prĂ©cĂ©dent, et les commandes sont faites pour ĂȘtre essayĂ©es au fur et Ă mesure.
---
## Sommaire
0. [Ce qu'est Ruff](#0-ce-quest-ruff)
1. [Niveau 1 â Premier lancement et lecture de la sortie](#1-niveau-1--premier-lancement-et-lecture-de-la-sortie)
2. [Niveau 2 â Corriger automatiquement](#2-n# MaĂźtriser la sortie de `pytest`
> Guide progressif pour régler ce que pytest affiche, du premier `pytest` lancé jusqu'à une configuration de projet stable. Chaque niveau s'appuie sur le précédent. Les commandes sont à tester au fur et à mesure sur un vrai projet : c'est en voyant la sortie changer qu'on retient.
---
## Sommaire
0. [Lire une sortie pytest](#0-lire-une-sortie-pytest)
1. [Niveau 1 â VerbositĂ© : `-v`, `-q`](#1-niveau-1--verbositĂ©)
2. [Niveau 2 â Le rĂ©sumĂ© final : `-r`](#2-nive/**
* @param {string} s
* @return {number}
*/
var longestValidParentheses = function(s) {
// Store indices. Start with -1 as a base for valid substrings.
let stack = [-1];
let maxLen = 0;
for (let i = 0; i < s.length; i++) {
if (s[i] === '(') {
// Save the index of each opening parenthesis.
stack.push(i);
} else {
// Try to match the current ')'.
stack.pop();
if (stack.length === 0) {
# Hire a Cleaning â Professional House Cleaning Services
[Hire a Cleaning](https://hireacleaning.com) is a professional cleaning company providing dependable house cleaning, Airbnb and vacation rental cleaning, and commercial cleaning services.
A clean space makes everything better. Whether you need a one-time deep clean, recurring housekeeping, or fast and reliable turnover cleaning between guests, Hire a Cleaning delivers consistent, high-quality results with careful attention to detail. The/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function(n) {
const result = [];
function backtrack(current, open, close) {
// If we've used all parentheses, save the combination
if (current.length === n * 2) {
result.push(current);
return;
}
// Add an opening parenthesis if we still have some left
if (open < n) {
backtrack(current + "(", open + 1, close);
}
// Add