<commit_before>class Song:
	url = None
	skipped = False
	bmpThumbnail = None

	def __init__(self, *args, **kwargs): # we must support an empty init for PersistentObject
		self.f = None
		self._fileMetadata = None
		self._metadata = None
		for key,value in kwargs.items():
			setattr(self, key, value)
		if len(args) == 1: # guess this is the url
			assert "url" not in kwargs
			self.url = args[0]
	def __nonzero__(self): # this is mostly for noninited Song objects
		return bool(self.url)
	def __eq__(self, other):
		return self.url == other.url
	def openFile(self):
		if not self.f:
			self.f = open(self.url)

	# { ffmpeg player interface
	def readPacket(self, bufSize):
		s = self.f.read(bufSize)
		return s
	def seekRaw(self, offset, whence):
		r = self.f.seek(offset, whence)
		return self.f.tell()
	# ffmpeg player interface end }
	
	def close(self):
		self.f = None

	# returns list of all root attrib names
	@property
	def rootAttribNames(self):<commit_msg>small fix<commit_after>class Song:
	url = None
	skipped = False
	bmpThumbnail = None

	def __init__(self, *args, **kwargs): # we must support an empty init for PersistentObject
		self.f = None
		self._fileMetadata = None
		self._metadata = None
		for key,value in kwargs.items():
			setattr(self, key, value)
		if len(args) == 1: # guess this is the url
			assert "url" not in kwargs
			self.url = args[0]
	def __nonzero__(self): # this is mostly for noninited Song objects
		return bool(self.url)
	def __eq__(self, other):
		return hasattr(other, "url") and self.url == other.url
	def openFile(self):
		if not self.f:
			self.f = open(self.url)

	# { ffmpeg player interface
	def readPacket(self, bufSize):
		s = self.f.read(bufSize)
		return s
	def seekRaw(self, offset, whence):
		r = self.f.seek(offset, whence)
		return self.f.tell()
	# ffmpeg player interface end }
	
	def close(self):
		self.f = None

	# returns list of all root attrib names
	@property
	def rootAttribNames(self):
{'fraction_non_alphanumeric': 0.11105424769703173, 'fraction_numerical': 0.0020470829068577278, 'mean_word_length': 3.710843373493976, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, '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': '6750466', 'n_tokens_mistral': 733, 'n_tokens_neox': 678, 'n_words': 221}