mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-29 00:35:00 +00:00
cleaner logic for load/save analytics.json
This commit is contained in:
parent
62d8190733
commit
0aad7b46f6
2 changed files with 46 additions and 45 deletions
|
@ -25,16 +25,17 @@ class Analytics:
|
|||
|
||||
def __init__(self, enable=False, logfile=None, permanently_disable=False):
|
||||
self.logfile = logfile
|
||||
self.permanently_disable = permanently_disable
|
||||
if not enable or permanently_disable:
|
||||
|
||||
self.get_or_create_uuid()
|
||||
|
||||
if not enable or self.permanently_disable or permanently_disable:
|
||||
self.mp = None
|
||||
self.ph = None
|
||||
if permanently_disable:
|
||||
self.mark_as_permanently_disabled()
|
||||
if permanently_disable and not self.permanently_disable:
|
||||
self.permanently_disable = True
|
||||
self.save_data()
|
||||
return
|
||||
|
||||
self.user_id = self.get_or_create_uuid()
|
||||
|
||||
if self.user_id and not self.permanently_disable:
|
||||
self.mp = Mixpanel(mixpanel_project_token)
|
||||
self.ph = Posthog(project_api_key=posthog_project_api_key, host=posthog_host)
|
||||
|
@ -44,35 +45,29 @@ class Analytics:
|
|||
data_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
return data_file
|
||||
|
||||
def mark_as_permanently_disabled(self):
|
||||
data_file = self.get_data_file_path()
|
||||
if data_file.exists():
|
||||
with open(data_file, "r") as f:
|
||||
data = json.load(f)
|
||||
else:
|
||||
data = {"uuid": str(uuid.uuid4())}
|
||||
data["permanently_disabled"] = True
|
||||
with open(data_file, "w") as f:
|
||||
json.dump(data, f)
|
||||
|
||||
def get_or_create_uuid(self):
|
||||
data_file = self.get_data_file_path()
|
||||
|
||||
if data_file.exists():
|
||||
with open(data_file, "r") as f:
|
||||
data = json.load(f)
|
||||
if "permanently_disabled" in data and data["permanently_disabled"]:
|
||||
self.permanently_disable = True
|
||||
self.mp = None
|
||||
self.ph = None
|
||||
self.load_data()
|
||||
if self.user_id:
|
||||
return
|
||||
return data["uuid"]
|
||||
|
||||
new_uuid = str(uuid.uuid4())
|
||||
with open(data_file, "w") as f:
|
||||
json.dump({"uuid": new_uuid}, f)
|
||||
self.user_id = str(uuid.uuid4())
|
||||
self.save_data()
|
||||
|
||||
return new_uuid
|
||||
def load_data(self):
|
||||
data_file = self.get_data_file_path()
|
||||
if data_file.exists():
|
||||
try:
|
||||
data = json.loads(data_file.read_text())
|
||||
self.permanently_disable = data.get("permanently_disable")
|
||||
self.user_id = data.get("uuid")
|
||||
except json.decoder.JSONDecodeError:
|
||||
pass
|
||||
|
||||
def save_data(self):
|
||||
data_file = self.get_data_file_path()
|
||||
data = dict(uuid=self.user_id, permanently_disable=self.permanently_disable)
|
||||
|
||||
data_file.write_text(json.dumps(data, indent=4))
|
||||
|
||||
def get_system_info(self):
|
||||
return {
|
||||
|
|
|
@ -13,7 +13,7 @@ a future release.
|
|||
|
||||
## Anonymous, no personal info
|
||||
|
||||
No personal information is collected: no user identity, none of your code,
|
||||
No personal information is collected: no user identity, none of your code, keys,
|
||||
prompts or chat messages.
|
||||
|
||||
Aider collects information on:
|
||||
|
@ -32,13 +32,6 @@ features and commands are most used.
|
|||
It also helps uncover bugs that users are experiencing, so that they can be fixed
|
||||
in upcoming releases.
|
||||
|
||||
## Sample analytics data
|
||||
|
||||
To get a better sense of what type of data is collected, you can review some
|
||||
[sample analytics logs](https://github.com/paul-gauthier/aider/blob/main/aider/website/assets/sample-analytics.jsonl).
|
||||
These are the last 1,000 analytics events from the author's
|
||||
personal use of aider, updated regularly.
|
||||
|
||||
## Enabling & disabling analytics
|
||||
|
||||
You can opt out of analytics forever by running this command one time:
|
||||
|
@ -48,7 +41,7 @@ aider --analytics-disable
|
|||
```
|
||||
|
||||
To enable analytics for a single session, you can run the command below.
|
||||
This will *not* do anything if you have permanently disabled analytics with the previous
|
||||
This will *not* have any effect if you have permanently disabled analytics with the previous
|
||||
command.
|
||||
|
||||
```
|
||||
|
@ -61,7 +54,25 @@ To disable analytics for a single session, you can run:
|
|||
aider --no-analytics
|
||||
```
|
||||
|
||||
## Logging and inspecting analytics
|
||||
## Details about data being collected
|
||||
|
||||
### Sample analytics data
|
||||
|
||||
To get a better sense of what type of data is collected, you can review some
|
||||
[sample analytics logs](https://github.com/paul-gauthier/aider/blob/main/aider/website/assets/sample-analytics.jsonl).
|
||||
These are the last 1,000 analytics events from the author's
|
||||
personal use of aider, updated regularly.
|
||||
|
||||
|
||||
### Analytics code
|
||||
|
||||
Since aider is open source, all the places where aider collects analytics
|
||||
are visible in the source code.
|
||||
They can be viewed using
|
||||
[GitHub search](https://github.com/search?q=repo%3Apaul-gauthier%2Faider+%22.event%28%22&type=code).
|
||||
|
||||
|
||||
### Logging and inspecting analytics
|
||||
|
||||
You can get a full log of the analytics that aider is collecting,
|
||||
in case you would like to audit or inspect this data.
|
||||
|
@ -76,11 +87,6 @@ If you want to just log analytics without reporting them, you can do:
|
|||
aider --analytics-log filename.jsonl --no-analytics
|
||||
```
|
||||
|
||||
Since aider is open source, all the places where aider reports analytics
|
||||
are visible in the source code.
|
||||
They can be easily viewed using
|
||||
[GitHub search](https://github.com/search?q=repo%3Apaul-gauthier%2Faider+%22.event%28%22&type=code).
|
||||
|
||||
|
||||
## Reporting issues
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue