<commit_before>digraph fetch {

	SimpleObject [shape=box];
	DataSource [shape=box];
	RsyncMirrorSource [shape=box];
	EmptySource [shape=box];
	DateRangeSource [shape=box];
	FtpSource [shape=box];
	FtpListingSource [shape=box];
	_HttpBaseSource [shape=box];
	HttpSource [shape=box];
	RssSource [shape=box];
	FilenameTransform [shape=box];
	RegexOutputPathTransform [shape=box];
	DataFileNameTransform [shape=box];
	ResultHandler [shape=box];
	WrapHandler [shape=box];
	ScheduledItem [shape=box];
	Process [shape=box];
	ScheduledProcess [shape=box];
	Scheduler[shape=box];
	Config[shape=box];
	RunConfig[shape=box];
	Uri[shape=box];
	TaskFailureListener[shape=box];
	TaskFailureEmailer[shape=box];
	ResultHandler[shape=box];
	NotifyResultHandler[shape=box];

	SimpleObject -> DataSource;
	DataSource -> RsyncMirrorSource;
	DataSource -> EmptySource;
	DataSource -> DateRangeSource;
	DataSource -> FtpSource;
	DataSource -> FtpListingSource;
	DataSource -> _HttpBaseSource;
	_HttpBaseSource -> HttpSource;
	_HttpBaseSource -> RssSource;

	SimpleObject -> FilenameTransform;
        FilenameTransform -> RegexOutputPathTransform;
        FilenameTransform -> DataFileNameTransform;

	SimpleObject -> ScheduledItem;
	SimpleObject -> Scheduler;
	TaskFailureListener -> TaskFailureEmailer;
	ResultHandler -> NotifyResultHandler;
	ResultHandler -> WrapHandler;
	Process -> ScheduledProcess;
}        <commit_msg>Elaborate the class diagram<commit_after>digraph fetch {

	node[shape=record,style=filled,fillcolor=gray95]
	edge[dir=back, arrowtail=empty]

	SimpleObject [shape=box];
	4[label="{DataSource|trigger(reporter)}"];
	RsyncMirrorSource [shape=box];
	EmptySource [shape=box];
	DateRangeSource [shape=box];
	FtpSource [shape=box];
	FtpListingSource [shape=box];
	_HttpBaseSource [shape=box];
	HttpSource [shape=box];
	RssSource [shape=box];
	FilenameTransform [shape=box];
	RegexOutputPathTransform [shape=box];
	DataFileNameTransform [shape=box];
	WrapHandler [shape=box];
	ScheduledItem [shape=box];
	Process [shape=box];
	ScheduledProcess [shape=box];
	Scheduler[shape=box];
	Config[shape=box];
	RunConfig[shape=box];
	Uri[shape=box];
	TaskFailureListener[shape=box];
	TaskFailureEmailer[shape=box];
	5[label="{ResultHandler|file_error()\nfiles_complete()\nfile_complete()}"];
	6[label="{NotifyResultHandler}"];
	2[label="{FileProcessor|process()}"];
	3[label="{ShellFileProcessor}"];

	SimpleObject -> 4;
	4 -> RsyncMirrorSource;
	4 -> EmptySource;
	4 -> DateRangeSource;
	4 -> FtpSource;
	4 -> FtpListingSource;
	4 -> _HttpBaseSource;
	_HttpBaseSource -> HttpSource;
	_HttpBaseSource -> RssSource;

	SimpleObject -> FilenameTransform;
        FilenameTransform -> RegexOutputPathTransform;
        FilenameTransform -> DataFileNameTransform;

	SimpleObject -> ScheduledItem;
	SimpleObject -> Scheduler;
	TaskFailureListener -> TaskFailureEmailer;
	5 -> 6;
	5 -> WrapHandler;
	Process -> ScheduledProcess;
	2 -> 3;
}        
{'fraction_non_alphanumeric': 0.12987012987012986, 'fraction_numerical': 0.006493506493506494, 'mean_word_length': 6.410126582278481, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 40, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7269321', 'n_tokens_mistral': 961, 'n_tokens_neox': 932, 'n_words': 171}