Creëer een aangepaste Tabnine snippet bibliotheek voor mijn projecten
description
Met deze prompt kun je snel een op maat gemaakte snippet bibliotheek opbouwen die je veelgebruikte codepatronen automatisch aanvult, waardoor je tijd bespaart en consistentie in je code behoudt. Dit is effectiever dan algemene suggesties omdat het specifiek op jouw projecten en stijl is afgestemd.
prompt
Help me een persoonlijke bibliotheek met code snippets op te bouwen in Tabnine die aansluit bij mijn veelgebruikte codepatronen en projecttypen. Projecttype: < ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze aanpak om een persoonlijke bibliotheek met code snippets op te bouwen in Tabnine, afgestemd op jouw projecttype en codepatronen:
1. Verzamel je meest gebruikte codepatronen:
- API-aanroepen in Python (bijvoorbeeld met requests)
- Foutafhandeling (try-except blokken)
2. Maak een lokale map voor je snippets:
- Bijvoorbeeld: `~/.tabnine/snippets/`
3. Maak voor elk patroon een aparte snippet:
- Bijvoorbeeld voor API-aanroepen:
```json
{
"name": "API GET verzoek",
"prefix": "api_get",
"body": [
"import requests",
"",
"response = requests.get('${1:https://api.example.com/data}')",
"if response.status_code == ${2:200}:",
" ${3:result} = response.json()",
"else:",
" print('Fout:', response.status_code)"
],
"description": "Voert een GET-verzoek uit met foutafhandeling"
}
```
- Voor foutafhandeling:
```json
{
"name": "Foutafhandeling met try-except",
"prefix": "try_except",
"body": [
"try:",
" ${1:code}",
"except ${2:Exception} as ${3:e}:",
" print('Fout:', ${3:e})"
],
"description": "Basis try-except structuur"
}
```
4. Voeg deze snippets toe aan Tabnine:
- Plaats de JSON-bestanden in je snippets-map.
- Herstart Tabnine of herlaad je editor om de snippets te laten herkennen.
5. Gebruik je snippets:
- Typ de prefix (bijvoorbeeld `api_get` of `try_except`) in je Python-bestand.
- Tabnine zal de snippet voorstellen; druk op Tab of Enter om te gebruiken.
6. (Optioneel) Pas snippets aan:
- Voeg variabelen toe voor flexibiliteit.
- Bewaar verschillende snippets voor diverse API-methoden of foutafhandelingspatronen.
Door deze aanpak bouw je een gepersonaliseerde codebibliotheek die naadloos aansluit bij je workflow voor webapplicaties in Python met focus op API-aanroepen en foutafhandeling.
provider: deepseek
model: deepseek-chat
Absoluut! Hier is een gestructureerde handleiding om een effectieve persoonlijke bibliotheek in Tabnine op te bouwen, specifiek gericht op Python-webapplicaties met API-aanroepen en robuuste foutafhandeling.
### Stap 1: Basisstructuur van je Snippet-bibliotheek
Begin met het organiseren van je snippets in logische categorieën. Maak aparte bestanden of mappen voor:
1. `api_requests/`
2. `error_handling/`
3. `web_frameworks/` (bijv. voor Flask of FastAPI)
4. `utility_functions/`
### Stap 2: Essentiële Code Snippets (Kopieer, plak en pas aan)
Hier zijn de bouwstenen voor je bibliotheek. Gebruik deze als templates.
#### 1. Gestructureerde API-aanroep met `requests` en basis foutafhandeling
**Bestandsnaam suggestie:** `api_requests/basic_get_request.py`
```python
import requests
from requests.exceptions import RequestException
import logging
# Configureer logging (zorg dat dit elders in je app eenmaal wordt gedaan)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def make_api_get_request(url: str, params: dict = None, headers: dict = None) -> dict | None:
"""
Voert een veilige GET-request uit naar een API-eindpunt.
Args:
url (str): De volledige URL van het API-eindpunt.
params (dict, optional): Query parameters. Standaard is None.
headers (dict, optional): Request headers. Standaard is None.
Returns:
dict | None: Het JSON-response lichaam bij succes, anders None.
"""
try:
response = requests.get(url, params=params, headers=headers, timeout=10)
response.raise_for_status() # Gooit een exception voor 4xx/5xx statuscodes
logger.info(f"API-aanroep geslaagd: {url}")
return response.json()
except RequestException as e:
# Vang alle requests-gerelateerde fouten af (netwerk, timeout, HTTP-fout)
logger.error(f"API-aanroep mislukt naar {url}: {e}")
return None
# Gebruiksvoorbeeld:
# result = make_api_get_request("https://api.voorbeeld.com/data", params={"zoekterm": "python"})
# if result:
# verwerk_data(result)
```
#### 2. Geavanceerde foutafhandeling met aangepaste exceptions
**Bestandsnaam suggestie:** `error_handling/custom_api_exceptions.py`
```python
class APIError(Exception):
"""Basis exception voor API-gerelateerde fouten."""
def __init__(self, message, status_code=None, response_text=None):
super().__init__(message)
self.status_code = status_code
self.response_text = response_text
class APITimeoutError(APIError):
"""Specifieke exception voor time-outs bij API-aanroepen."""
pass
class APINotFoundError(APIError):
"""Specifieke exception voor 404 Not Found responses."""
pass
def advanced_api_request(url: str):
"""
Voorbeeld van een aanroep die specifieke exceptions opwerpt voor betere fouthantering.
"""
try:
response = requests.get(url, timeout=5)
response.raise_for_status()
return response.json()
except requests.exceptions.Timeout:
# Specifiek time-out geval
raise APITimeoutError(f"De aanvraag naar {url} is verlopen.")
except requests.exceptions.HTTPError as e:
# HTTP status code fouten (4xx, 5xx)
if response.status_code == 404:
raise APINotFoundError(f"Resource niet gevonden: {url}", status_code=404, response_text=response.text)
else:
raise APIError(f"HTTP-fout {response.status_code}: {e}", status_code=response.status_code, response_text=response.text)
except requests.exceptions.RequestException as e:
# Alle andere netwerk/requests fouten
raise APIError(f"Netwerkfout tijdens aanroep van {url}: {e}")
# Gebruiksvoorbeeld (in je hoofdcode):
# try:
# data = advanced_api_request("https://api.voorbeeld.com/user/123")
# verwerk_data(data)
# except APINotFoundError:
# toon_foutmelding_aan_gebruiker("Gebruiker niet gevonden.")
# except APITimeoutError:
# toon_foutmelding_aan_gebruiker("De service reageert niet. Probeer het later opnieuw.")
# except APIError as e:
# logger.critical(f"Ernstige API-fout: {e}")
# toon_algemene_foutmelding()
```
#### 3. Snippet voor veelvoorkomende API-patterns (POST, Authenticatie)
**Bestandsnaam suggestie:** `api_requests/auth_post_request.py`
```python
def post_with_bearer_auth(url: str, data: dict, auth_token: str) -> dict | None:
"""
Voert een POST-request uit met Bearer Token authenticatie.
Args:
url (str): Het API-eindpunt.
data (dict): De data die als JSON meegestuurd wordt.
auth_token (str): Het Bearer Token voor authenticatie.
Returns:
dict | None: Het JSON-response bij succes, anders None.
"""
headers = {
"Authorization": f"Bearer {auth_token}",
"Content-Type": "application/json"
}
try:
response = requests.post(url, json=data, headers=headers, timeout=10)
response.raise_for_status()
return response.json()
except requests.exceptions.HTTPError as e:
if response.status_code == 401:
logger.error("Authenticatie mislukt: Ongeldig token.")
# ... andere specifieke statuscodes afhandelen
logger.error(f"POST-aanroep mislukt: {e}")
return None
except RequestException as e:
logger.error(f"Netwerkfout tijdens POST: {e}")
return None
```
### Stap 3: Integratie en Gebruik in Tabnine
1. **Sla je snippets op:** Bewaar de bovenstaande code in `.py`-bestanden in een map zoals `~/my_tabnine_snippets/python/`.
2. **Configureer Tabnine:**
* Open de instellingen van je IDE/Editor (VS Code, PyCharm, etc.).
* Zoek naar de Tabnine-instellingen.
* Wijzig het pad naar je snippets-map in de relevante setting (vaak `Tabnine > Config > Code Snippets Path` of vergelijkbaar).
3. **Gebruik je snippets:** Begin nu met typen in je codebase. Tabnine zal je persoonlijke snippets herkennen en voorstellen op basis van de context. Typ bijvoorbeeld `make_api_` of `post_with_` en Tabnine zou je eigen functie moeten voorstellen.
### Aanvullende Tips
* **Consistentie:** Houd je naming conventions consistent (bijv. altijd `make_*_request`).
* **Documentatie:** Schrijf altijd docstrings (zoals in de voorbeelden). Dit helpt niet alleen jou, maar ook Tabnine om de context beter te begrijpen.
* **Refactor:** Als je een patroon herhaaldelijk handmatig typt, stop dan en voeg het direct toe aan je snippet-bibliotheek.
* **Framework-specifiek:** Maak snippets voor je webframework (Flask, FastAPI, Django). Bijvoorbeeld een snippet voor een standaard Flask route met foutafhandeling.
```python
# Voorbeeld: snippets/web_frameworks/flask_basic_route.py
from flask import jsonify
@app.route('/api/data')
def get_data():
try:
data = haal_data_op_uit_database()
return jsonify({"success": True, "data": data})
except Exception as e:
logger.exception("Fout in /api/data endpoint") # Log de volledige traceback
return jsonify({"success": False, "error": "Interne serverfout"}), 500
```
Door deze bibliotheek op te bouwen en te onderhouden, wordt je ontwikkeling veel efficiënter en consistenter. Veel succes!