




from __future__ import annotations

import requests

lowerCamelCase__					:  int      							=				set(
    'approved_at_utc approved_by author_flair_background_color\nauthor_flair_css_class author_flair_richtext author_flair_template_id author_fullname\nauthor_premium can_mod_post category clicked content_categories created_utc downs\nedited gilded gildings hidden hide_score is_created_from_ads_ui is_meta\nis_original_content is_reddit_media_domain is_video link_flair_css_class\nlink_flair_richtext link_flair_text link_flair_text_color media_embed mod_reason_title\nname permalink pwls quarantine saved score secure_media secure_media_embed selftext\nsubreddit subreddit_name_prefixed subreddit_type thumbnail title top_awarded_type\ntotal_awards_received ups upvote_ratio url user_reports'.split()
)

def    UpperCAmelCase_				( __UpperCAmelCase		:      str     ,     __UpperCAmelCase		:      int = 1     ,     __UpperCAmelCase		:      str = "new"     ,     __UpperCAmelCase		:      list | None = None				)   ->					dict:
      SCREAMING_SNAKE_CASE_      		=     wanted_data or []
      if invalid_search_terms := ", ".join(sorted(set(__UpperCAmelCase				) - valid_terms				)				):
            SCREAMING_SNAKE_CASE_      		=     f"Invalid search term: {invalid_search_terms}"
            raise ValueError(__UpperCAmelCase				)
      SCREAMING_SNAKE_CASE_      		=     requests.get(
          f"https://reddit.com/r/{subreddit}/{age}.json?limit={limit}"     ,     headers={'User-agent': 'A random string'}     ,     )
      if response.status_code == 4_29:
            raise requests.HTTPError

      SCREAMING_SNAKE_CASE_      		=     response.json()
      if not wanted_data:
            return {id_: data["data"]["children"][id_] for id_ in range(__UpperCAmelCase				)}

      SCREAMING_SNAKE_CASE_      		=     {}
      for id_ in range(__UpperCAmelCase				):
            SCREAMING_SNAKE_CASE_      		=     {
                item: data['data']['children'][id_]['data'][item] for item in wanted_data
            }
      return data_dict


if __name__ == "__main__":
   # If you get Error 429, that means you are rate limited.Try after some time
   print(get_subreddit_data('learnpython', wanted_data=['title', 'url', 'selftext']))




from __future__ import annotations

import typing
from collections.abc import Iterable

import numpy as np

_lowerCamelCase    :		Dict		      =    typing.Union[Iterable[float], Iterable[int], np.ndarray]  # noqa: UP007
_lowerCamelCase    :		Any		      =    typing.Union[np.floataa, int, float]  # noqa: UP007

def        __a			(   __lowerCAmelCase      ,	__lowerCAmelCase   )     ->     VectorOut:
					return np.sqrt(np.sum((np.asarray(__lowerCAmelCase   ) - np.asarray(__lowerCAmelCase   )) ** 2   )   )

def        __a			(   __lowerCAmelCase      ,	__lowerCAmelCase   )     ->     VectorOut:
					return sum((va - va) ** 2 for va, va in zip(__lowerCAmelCase      ,	__lowerCAmelCase   )   ) ** (1 / 2)


if __name__ == "__main__":

			def        __a			(   )     ->     None:
								from timeit import timeit

								print('Without Numpy'   )
								print(
								    timeit(
								        'euclidean_distance_no_np([1, 2, 3], [4, 5, 6])'      ,	number=1_0000      ,	globals=globals()      ,	)   )
								print('With Numpy'   )
								print(
								    timeit(
								        'euclidean_distance([1, 2, 3], [4, 5, 6])'      ,	number=1_0000      ,	globals=globals()      ,	)   )



			benchmark()