






import os
from datetime import datetime as dt

from github import Github


A__      :     int       =					[
    'good first issue',
    'feature request',
    'wip',
]






def     a     (		):






				'''simple docstring'''
				lowercase__  					=     Github(os.environ['''GITHUB_TOKEN''']							)
				lowercase__  					=     g.get_repo('''huggingface/accelerate'''							)
				lowercase__  					=     repo.get_issues(state='''open'''							)

				for issue in open_issues:
								lowercase__  					=     sorted([comment for comment in issue.get_comments()]						,  key=lambda lowerCamelCase_							: i.created_at						,  reverse=lowerCamelCase_							)
								lowercase__  					=     comments[0] if len(lowerCamelCase_							) > 0 else None
								lowercase__  					=     dt.utcnow()
								lowercase__  					=     (current_time - issue.updated_at).days
								lowercase__  					=     (current_time - issue.created_at).days
								if (
								    last_comment is not None
								    and last_comment.user.login == "github-actions[bot]"
								    and days_since_updated > 7
								    and days_since_creation >= 30
								    and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()							)
								):
												# Close issue since it has been 7 days of inactivity since bot mention.
												issue.edit(state='''closed'''							)
								elif (
								    days_since_updated > 23
								    and days_since_creation >= 30
								    and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()							)
								):
												# Add stale comment
												issue.create_comment(
												    '''This issue has been automatically marked as stale because it has not had '''
												    '''recent activity. If you think this still needs to be addressed '''
												    '''please comment on this thread.\n\nPlease note that issues that do not follow the '''
												    '''[contributing guidelines](https://github.com/huggingface/accelerate/blob/main/CONTRIBUTING.md) '''
												    '''are likely to be ignored.'''							)


if __name__ == "__main__":
							main()












import numpy as np

import datasets


A__      :     int       =					'\nCompute the Mahalanobis Distance\n\nMahalonobis distance is the distance between a point and a distribution.\nAnd not between two distinct points. It is effectively a multivariate equivalent of the Euclidean distance.\nIt was introduced by Prof. P. C. Mahalanobis in 1936\nand has been used in various statistical applications ever since\n[source: https://www.machinelearningplus.com/statistics/mahalanobis-distance/]\n'

A__      :     Optional[int]       =					'\\n@article{de2000mahalanobis,\n  title={The mahalanobis distance},\n  author={De Maesschalck, Roy and Jouan-Rimbaud, Delphine and Massart, D{\'e}sir{\'e} L},\n  journal={Chemometrics and intelligent laboratory systems},\n  volume={50},\n  number={1},\n  pages={1--18},\n  year={2000},\n  publisher={Elsevier}\n}\n'

A__      :     Optional[int]       =					'\nArgs:\n    X: List of datapoints to be compared with the `reference_distribution`.\n    reference_distribution: List of datapoints from the reference distribution we want to compare to.\nReturns:\n    mahalanobis: The Mahalonobis distance for each datapoint in `X`.\nExamples:\n\n    >>> mahalanobis_metric = datasets.load_metric("mahalanobis")\n    >>> results = mahalanobis_metric.compute(reference_distribution=[[0, 1], [1, 0]], X=[[0, 1]])\n    >>> print(results)\n    {\'mahalanobis\': array([0.5])}\n'
@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION						,_KWARGS_DESCRIPTION      )
class  _UpperCAmelCase   (			datasets.Metric      ):

				"""simple docstring"""




				def 							lowercase__  (	self		:       str    ):

								'''simple docstring'''
								return datasets.MetricInfo(
								    description=_DESCRIPTION,    citation=_CITATION,    inputs_description=_KWARGS_DESCRIPTION,    features=datasets.Features(
								        {
								            '''X''': datasets.Sequence(datasets.Value('''float''',    id='''sequence'''    ),    id='''X'''    ),
								        }    ),    )




				def 							lowercase__  (	self		:       Dict,    lowerCamelCase		:       int,    lowerCamelCase		:       Optional[int]    ):

								'''simple docstring'''
								# convert to numpy arrays
								lowercase__  					=     np.array(lowerCamelCase    )
								lowercase__  					=     np.array(lowerCamelCase    )

								# Assert that arrays are 2D
								if len(X.shape    ) != 2:
												raise ValueError('''Expected `X` to be a 2D vector'''    )
								if len(reference_distribution.shape    ) != 2:
												raise ValueError('''Expected `reference_distribution` to be a 2D vector'''    )
								if reference_distribution.shape[0] < 2:
												raise ValueError(
												    '''Expected `reference_distribution` to be a 2D vector with more than one element in the first dimension'''    )

								# Get mahalanobis distance for each prediction
								lowercase__  					=     X - np.mean(lowerCamelCase    )
								lowercase__  					=     np.cov(reference_distribution.T    )
								try:
												lowercase__  					=     np.linalg.inv(lowerCamelCase    )
								except np.linalg.LinAlgError:
												lowercase__  					=     np.linalg.pinv(lowerCamelCase    )
								lowercase__  					=     np.dot(lowerCamelCase,    lowerCamelCase    )
								lowercase__  					=     np.dot(lowerCamelCase,    X_minus_mu.T    ).diagonal()

								return {"mahalanobis": mahal_dist}




