精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

2021 年發布 Python 軟件包的正確姿勢

開發 后端
如果您像我一樣,偶爾編寫一個有用的python實用小程序,并希望與您的同事共享。做到這一點的最好方法是制作一個Python軟件包:它易于安裝,并且可以避免進行拷貝操作。

 [[394524]]

本文轉載自微信公眾號「Python中文社區」,作者Anton  。轉載本文請聯系Python中文社區公眾號。  

如果您像我一樣,偶爾編寫一個有用的python實用小程序,并希望與您的同事共享。做到這一點的最好方法是制作一個Python軟件包:它易于安裝,并且可以避免進行拷貝操作。

您可能會認為創建軟件包很麻煩。其實現在已經不會這樣了。我將通過此分步指南進行說明。只需執行三個主要步驟(以及一系列可選步驟),并輔以幾個GitHub鏈接即可。

1.初始化

我們將創建podsearch - 一種在iTunes中搜索播客的實用程序。讓我們創建一個目錄和一個虛擬環境:

  1. $ mkdir podsearch 
  2. $ cd podsearch 
  3. $ python3 -m venv env 
  4. $ . env/bin/activate 

定義一個最小的包結構:

  1. ├── .gitignore 
  2. └── podsearch 
  3.     └── __init__.py 
  4. """Let's find some podcasts!""" 
  5.  
  6.  __version__ = "0.1.0" 
  7.  
  8.  
  9.  def search(namecount=5): 
  10.      """Search podcast by name.""" 
  11.      raise NotImplementedError() 

2.測試包

用Python創建一個包曾經是一個麻煩的任務。幸運的是,如今有一個很棒的 flit (https://flit.readthedocs.io/en/latest/)小程序可以簡化所有操作。讓我們安裝它:

  1. pip install flit 

并創建軟件包描述:

  1. $ flit init 
  2. Module name [podsearch]: 
  3. Author [Anton Zhiyanov]: 
  4. Author email [m@antonz.org]: 
  5. Home page [https://github.com/nalgeon/podsearch-py]: 
  6. Choose a license (see http://choosealicense.com/ for more info) 
  7. 1. MIT - simple and permissive 
  8. 2. Apache - explicitly grants patent rights 
  9. 3. GPL - ensures that code based on this is shared with the same terms 
  10. 4. Skip - choose a license later 
  11. Enter 1-4 [1]: 1 
  12.  
  13. Written pyproject.toml; edit that file to add optional extra info. 

pyproject.toml

Flit已創建pyproject.toml - 項目元數據文件。它已經具有將程序包發布到公共存儲庫-PyPI所需的一切。

注冊TestPyPi(測試存儲庫)和PyPI(主要存儲庫)。它們是完全獨立的,因此您將需要兩個帳戶。

在~/ .pypirc中設置對存儲庫的訪問權限:

  1. [distutils] 
  2. index-servers = 
  3.   pypi 
  4.   pypitest 
  5.  
  6. [pypi] 
  7. username: nalgeon  # replace with your PyPI username 
  8.  
  9. [pypitest] 
  10. repository: https://test.pypi.org/legacy/ 
  11. username: nalgeon  # replace with your TestPyPI username 

并將軟件包發布到測試存儲庫:

  1. $ flit publish --repository pypitest 
  2. Found 4 files tracked in git 
  3. ... 
  4. Package is at https://test.pypi.org/project/podsearch/ 

完畢!該軟件包可在TestPyPi上獲得。

3.公開軟件包

讓我們改進代碼,以便它能夠實際搜索播客:

  1. # ... 
  2.  
  3. SEARCH_URL = "https://itunes.apple.com/search" 
  4.  
  5. @dataclass 
  6. class Podcast: 
  7.     """Podcast metadata.""" 
  8.  
  9.     id: str 
  10.     name: str 
  11.     author: str 
  12.     url: str 
  13.     feed: Optional[str] = None 
  14.     category: Optional[str] = None 
  15.     image: Optional[str] = None 
  16.  
  17.  
  18. def search(name: str, limit: int = 5) -> List[Podcast]: 
  19.     """Search podcast by name.""" 
  20.     params = {"term"name"limit": limit, "media""podcast"
  21.     response = _get(url=SEARCH_URL, params=params) 
  22.     return _parse(response) 

并發布到主存儲庫-PyPI。僅在您的程序包中包含有用的代碼后,才執行此步驟。不要發布無效的程序包和存根。

  1. flit publish 

發布完畢!是時候與同事分享了。為了使軟件包易于使用,我建議您再執行以下幾個步驟。

A.自述文件Readme和變更日志changelog

沒人喜歡寫文檔。但是,如果沒有文檔,人們不太可能會想要安裝您的軟件包,因此我們需要添加README.md和CHANGELOG.md。

  • README.md
  • CHANGELOG.md

將README添加到pyproject.toml,以便PyPI在軟件包頁面上顯示它:

  1. description-file = "README.md" 

還要指定受支持的最低Python版本:

  1. requires-python = ">=3.7" 

更新__init__.py中的版本,并通過flit publish發布軟件包:

B.Linters和tests

我們來考慮一下格式設置(black),測試覆蓋率(coverage),代碼質量(flake8,pylint,mccabe)和靜態分析(mypy)。我們將通過tox處理一切。

  1. $ pip install black coverage flake8 mccabe mypy pylint pytest tox 

在tox.ini中創建tox配置:

  1. [tox] 
  2. isolated_build = True 
  3. envlist = py37,py38,py39 
  4.  
  5. [testenv] 
  6. deps = 
  7.     black 
  8.     coverage 
  9.     flake8 
  10.     mccabe 
  11.     mypy 
  12.     pylint 
  13.     pytest 
  14. commands = 
  15.     black podsearch 
  16.     flake8 podsearch 
  17.     pylint podsearch 
  18.     mypy podsearch 
  19.     coverage erase 
  20.     coverage run --include=podsearch/* -m pytest -ra 
  21.     coverage report -m 

tox.ini

并運行所有檢查:

  1. $ tox -e py39 
  2. ... 
  3. py39 run-test: commands[0] | black podsearch 
  4. All done!  
  5. ... 
  6. py39 run-test: commands[2] | pylint podsearch 
  7. Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00) 
  8. ... 
  9. py39 run-test: commands[6] | coverage report -m 
  10. TOTAL 100% 
  11. ... 
  12. py39: commands succeeded 
  13. congratulations :) 

linters檢測通過,測試也通過了,覆蓋率是100%。

C.云構建

每個可靠的開源項目在每次提交后都會進行云測試,因此我們也將這樣做。一個很好的附加效果是自述文件中有漂亮的徽章。

讓我們使用GitHub Actions構建項目,使用Codecov檢查測試覆蓋率,并使用Code Climate檢查代碼質量。

您將必須注冊Codecov和Code Climate(均支持GitHub登錄)并在設置中啟用軟件包存儲庫。

之后,將GitHub Actions構建配置添加到.github / workflows / build.yml:

  1. # ... 
  2. jobs: 
  3.     build: 
  4.         runs-on: ubuntu-latest 
  5.         strategy: 
  6.             matrix: 
  7.                 python-version: [3.7, 3.8, 3.9] 
  8.  
  9.         env: 
  10.             USING_COVERAGE: "3.9" 
  11.  
  12.         steps: 
  13.             - name: Checkout sources 
  14.               uses: actions/checkout@v2 
  15.  
  16.             - nameSet up Python 
  17.               uses: actions/setup-python@v2 
  18.               with
  19.                   python-version: $ 
  20.  
  21.             - name: Install dependencies 
  22.               run: | 
  23.                   python -m pip install --upgrade pip 
  24.                   python -m pip install black coverage flake8 flit mccabe mypy pylint pytest tox tox-gh-actions 
  25.  
  26.             - name: Run tox 
  27.               run: | 
  28.                   python -m tox 
  29.  
  30.             - name: Upload coverage to Codecov 
  31.               uses: codecov/codecov-action@v1 
  32.               if: contains(env.USING_COVERAGE, matrix.python-version) 
  33.               with
  34.                   fail_ci_if_error: true 

build.yml

就像我們前面一樣,GitHub通過tox進行測試。tox-gh-actions軟件包和USING_COVERAGE設置可確保tox使用與strategy.matrix所需的 GitHub Actions 相同的 Python 版本。

最后一步將測試覆蓋率發送給Codecov。Code Climate不需要單獨的步驟-它會自動發現存儲庫更改。

現在,一分鐘內提交,推送并享受結果。并且讓每個人也喜歡向README.md添加徽章:

  1. [![PyPI Version][pypi-image]][pypi-url] 
  2. [![Build Status][build-image]][build-url] 
  3. [![Code Coverage][coverage-image]][coverage-url] 
  4. [![Code Quality][quality-image]][quality-url] 
  5.  
  6. ... 
  7.  
  8. <!-- Badges --> 
  9.  
  10. [pypi-image]: https://img.shields.io/pypi/v/podsearch 
  11. [pypi-url]: https://pypi.org/project/podsearch/ 
  12. [build-image]: https://github.com/nalgeon/podsearch-py/actions/workflows/build.yml/badge.svg 
  13. [build-url]: https://github.com/nalgeon/podsearch-py/actions/workflows/build.yml 
  14. [coverage-image]: https://codecov.io/gh/nalgeon/podsearch-py/branch/main/graph/badge.svg 
  15. [coverage-url]: https://codecov.io/gh/nalgeon/podsearch-py 
  16. [quality-image]: https://api.codeclimate.com/v1/badges/3130fa0ba3b7993fbf0a/maintainability 
  17. [quality-url]: https://codeclimate.com/github/nalgeon/podsearch-py 

是不是很酷?

D.任務自動化

tox很好,但對于開發來說不是很方便。運行單個命令(例如pylint,coverage等)的速度更快。但是它們非常冗長,因此我們將一些無意義的操作進行自動化處理。

讓我們為Makefile的頻繁操作創建簡短的別名:

  1. .DEFAULT_GOAL := help 
  2. .PHONY: coverage deps help lint push test 
  3.  
  4. coverage:  ## Run tests with coverage 
  5.  coverage erase 
  6.  coverage run --include=podsearch/* -m pytest -ra 
  7.  coverage report -m 
  8.  
  9. deps:  ## Install dependencies 
  10.  pip install black coverage flake8 mccabe mypy pylint pytest tox 
  11.  
  12. lint:  ## Lint and static-check 
  13.  flake8 podsearch 
  14.  pylint podsearch 
  15.  mypy podsearch 
  16.  
  17. push:  ## Push code with tags 
  18.  git push && git push --tags 
  19.  
  20. test:  ## Run tests 
  21.  pytest -ra 

Makefile

這是我們的任務:

  1. $ make help 
  2. Usage: make [task] 
  3.  
  4. task                 help 
  5. ------               ---- 
  6. coverage             Run tests with coverage 
  7. deps                 Install dependencies 
  8. lint                 Lint and static-check 
  9. push                 Push code with tags 
  10. test                 Run tests 
  11. help                 Show help message 

為了使代碼更簡潔,請使用make調用替換原始的build.yml步驟:

  1. name: Install dependencies 
  2.   run: | 
  3.       make deps 
  4.  
  5. name: Run tox 
  6.   run: | 
  7.       make tox 

E.云發布

GitHub有能力為我們運行flit publish。讓我們創建一個單獨的工作流程:

  1. name: publish 
  2.  
  3. on
  4.     release: 
  5.         types: [created] 
  6.  
  7. jobs: 
  8.     publish: 
  9.         runs-on: ubuntu-latest 
  10.         steps: 
  11.             - name: Checkout sources 
  12.               uses: actions/checkout@v2 
  13.  
  14.             - nameSet up Python 
  15.               uses: actions/setup-python@v2 
  16.               with
  17.                   python-version: "3.9" 
  18.  
  19.             - name: Install dependencies 
  20.               run: | 
  21.                   make deps 
  22.  
  23.             - name: Publish to PyPi 
  24.               env: 
  25.                   FLIT_USERNAME: ${{ secrets.PYPI_USERNAME }} 
  26.                   FLIT_PASSWORD: ${{ secrets.PYPI_PASSWORD }} 
  27.               run: | 
  28.                   make publish 

publish.yml

在存儲庫設置(Settings > Secrets > New repository secret)中設置了PYPI_USERNAME和PYPI_PASSWORD。使用您的PyPi用戶名和密碼,甚至更好的-API令牌。

現在,一旦創建新版本,GitHub將自動發布該軟件包。

您的軟件包已準備就緒!它具有人們夢寐以求的一切:干凈的代碼,清晰的文檔,測試和云構建。是時候告訴你的同事和朋友了。

這些設置將使您的 Python 軟件包變得AWESOME:

  • pyproject.toml
  • tox.ini
  • Makefile
  • build.yml
  • publish.yml 

 

責任編輯:武曉燕 來源: Python中文社區
相關推薦

2024-01-26 12:35:25

JavaScript項目軟件包

2022-11-07 16:53:53

PipPython軟件包

2017-08-21 11:13:43

LinuxSnapcraft Snap軟件包

2019-11-26 17:29:15

Adobe

2016-02-16 13:21:33

2018-06-22 10:05:04

Arch LinuxDEB軟件包

2010-02-05 14:46:20

Ubuntu軟件包

2017-02-23 15:37:44

OptionObject容器

2016-05-09 10:41:03

算法分析開發

2018-01-11 15:31:39

命令Linux關機

2020-02-24 15:26:40

Python短信免費

2023-01-06 08:24:00

PandasPython

2017-09-14 14:30:47

LinuxSublime Tex編輯器

2011-04-30 16:56:45

Windows PhoiOS

2010-01-07 17:32:09

2019-09-25 09:20:33

機器學習Python數據科學

2017-07-10 13:09:45

前端Flexbox

2017-03-16 11:39:33

Openstack源碼姿勢

2023-01-30 07:41:43

2021-09-13 12:45:08

Ubuntu 20.0PythonLinux
點贊
收藏

51CTO技術棧公眾號

欧美视频二区| 日韩欧美中文字幕在线视频| 久久久国产综合精品女国产盗摄| 日本午夜精品理论片a级appf发布| 亚洲国产精品无码久久久久高潮| 在线观看网站免费入口在线观看国内| 久久精品一二三| 国产区精品视频| 九九热只有精品| 日韩av系列| 欧美三级韩国三级日本一级| 日本黄网站色大片免费观看| 色资源在线观看| 麻豆一区二区三| 欧美精品videossex88| 97人妻精品一区二区三区免| 成人mm视频在线观看| 亚洲黄色小视频| 欧美日韩免费高清| 国产三区在线播放| 男人的天堂亚洲在线| 超碰97人人做人人爱少妇| 国产精品无码电影| 91精品国产色综合久久不卡粉嫩| 午夜免费久久看| 一区二区三区在线观看www| 丰满人妻妇伦又伦精品国产| 日本不卡一区二区三区| 久久久视频精品| 亚洲色图100p| 色婷婷av一区二区三区丝袜美腿 | 国产精品16p| 欧美一区电影| 日韩电影大全免费观看2023年上 | 国产高清精品网站| 国产极品精品在线观看| 精品在线视频观看| 日韩欧美一区免费| 亚洲欧美国产一区二区三区| 99热这里只有精品2| 高清av一区二区三区| 精品福利在线看| 中国女人做爰视频| 午夜视频成人| 久久精品一区二区三区不卡牛牛| 国产精选一区二区| 99久久久久久久| 另类人妖一区二区av| 日本国产欧美一区二区三区| 欧美日韩中文视频| 午夜精品剧场| 另类视频在线观看| 天堂а√在线中文在线鲁大师| 小说区图片区色综合区| 亚洲国产精品字幕| 少妇熟女视频一区二区三区| 99久久99九九99九九九| 欧美色综合网站| 久久九九国产视频| 欧美18av| 日本黄色一区二区| 日av中文字幕| 欧美激情喷水| 色哟哟国产精品| 无码aⅴ精品一区二区三区浪潮| www.youjizz.com在线| 亚洲一区二区黄色| 国产va亚洲va在线va| 国产啊啊啊视频在线观看| 伊人色综合久久天天人手人婷| 7777在线视频| 午夜在线激情影院| 亚洲图片欧美一区| 免费毛片网站在线观看| 阿v视频在线| 污片在线观看一区二区| 成人免费毛片网| 在线免费日韩片| 欧美在线free| 欧美男女交配视频| av国产精品| 日韩一级高清毛片| 污污免费在线观看| 午夜先锋成人动漫在线| 亚洲天堂2020| 免费黄色激情视频| 欧美激情视频一区二区三区在线播放| 欧美高清电影在线看| 日韩精品视频免费播放| 久久亚洲影院| 成人妇女淫片aaaa视频| 亚洲精品一区二区三区四区 | 中文字幕影片免费在线观看| 亚洲欧美日本伦理| 中文字幕亚洲无线码a| 国产黄色小视频网站| 欧美精品播放| 日本成人黄色片| 国产精品无码一区二区桃花视频| 成人免费毛片app| 欧美精品与人动性物交免费看| 国产黄在线观看免费观看不卡| 国产精品福利在线播放| 久久精品无码中文字幕| 亚洲天堂一区二区| 日韩一级欧美一级| 一区二区黄色片| 久久久久久久久国产一区| 欧美精品18videosex性欧美| 国产成人a v| 国产传媒一区在线| 欧美一区二区在线视频观看| av片在线观看永久免费| 欧美三级免费观看| 中文字幕乱码在线人视频| 自拍偷拍一区| 欧美精品在线播放| 波多野结衣小视频| 国产成人精品www牛牛影视| 五月天久久综合网| 国内精彩免费自拍视频在线观看网址| 欧美日韩卡一卡二| 97香蕉碰碰人妻国产欧美 | 国产福利一区二区三区| 日韩欧美三级一区二区| 成人黄色动漫| 91精品国模一区二区三区| 中文字幕免费看| 国产一区激情| 成人国产精品色哟哟| 青青草视频免费在线观看| 亚洲免费av网站| 天堂av在线网站| 色婷婷狠狠五月综合天色拍| 欧美黑人性视频| 国产精品污视频| 亚洲国产精品av| 日本一区二区黄色| 成人搞黄视频| 欧美日韩电影在线观看| 亚洲熟女乱色一区二区三区久久久 | 毛片在线网站| 日韩午夜激情免费电影| 日日碰狠狠添天天爽| 日韩专区中文字幕一区二区| 精品午夜一区二区| www.8ⅹ8ⅹ羞羞漫画在线看| 欧美一级午夜免费电影| 肉色超薄丝袜脚交69xx图片| 琪琪一区二区三区| 日韩精品成人一区二区在线观看| 麻豆免费在线| 精品国产乱码久久久久久图片| 日韩激情综合网| 精品一区二区三区免费视频| 亚洲午夜在线观看| 99蜜月精品久久91| 在线看欧美日韩| 丁香社区五月天| 久久综合网色—综合色88| 国产精品成人久久电影| 国产一区调教| 97视频免费在线观看| 亚洲国产精品久久久久爰性色| 综合网在线视频| 亚洲午夜激情影院| 亚洲女同一区| 91手机在线视频| 污片在线免费观看| 精品久久久久久最新网址| 免费视频网站www| 羞羞视频在线观看一区二区| 亚洲超碰精品一区二区| 中文字幕永久免费| 午夜久久福利| av免费观看久久| av在线中出| 日韩精品电影网| 69xxxx国产| 国产精品免费视频一区| 91av视频免费观看| 真实国产乱子伦精品一区二区三区| 成人网页在线免费观看| 日韩av激情| 亚洲美女久久久| 一区二区三区免费在线视频| 亚洲人成小说网站色在线| 中国老熟女重囗味hdxx| 精品999日本| 欧美日韩在线一区二区三区| 成人一级视频| 欧美成人一二三| 手机看片1024日韩| 91久久国产综合久久| 国产亚洲精品久久久久久豆腐| 国产成人av一区二区三区在线 | 一级久久久久久久| 一个色妞综合视频在线观看| 国产精品无码电影| 青青草成人在线观看| 欧美做暖暖视频| 久久综合亚洲| www久久99| 久久人体大尺度| 久久亚洲精品中文字幕冲田杏梨| 蜜臀av免费在线观看| 91黄色免费看| 久久久久久蜜桃| 欧美激情一区二区三区不卡 | abab456成人免费网址| 美女999久久久精品视频| 日韩精品视频无播放器在线看 | 亚洲欧美激情四射在线日| 91美女精品网站| 精品久久久香蕉免费精品视频| 日本在线观看网址| 99久久综合狠狠综合久久| 可以看污的网站| 新67194成人永久网站| 日本特级黄色大片| 最新亚洲精品| 成人免费91在线看| 国产欧美自拍| 欧美专区中文字幕| 青青青国内视频在线观看软件| 亚洲无亚洲人成网站77777| 亚洲AV无码一区二区三区少妇| 91福利社在线观看| 成年人免费高清视频| 一区二区三区中文字幕在线观看| 娇妻被老王脔到高潮失禁视频| 成人动漫一区二区在线| 午夜大片在线观看| 免费在线观看日韩欧美| 久久婷婷国产精品| 一本综合精品| 男人天堂av片| 欧美激情成人在线| 懂色av粉嫩av蜜臀av| 菠萝蜜一区二区| 日本午夜精品一区二区| 欧美色资源站| 国产女人水真多18毛片18精品 | 国产人妻黑人一区二区三区| 国产综合久久久久影院| 亚洲精品自拍网| 久久人人超碰| 欧美韩国日本在线| 亚洲一区二区毛片| 国产视频一视频二| 99精品国产在热久久下载| 日本熟妇人妻xxxx| 国产综合精品一区| 蜜臀av色欲a片无码精品一区 | 99国产精品久久久| 中国免费黄色片| 床上的激情91.| 涩视频在线观看| 成人在线视频一区二区| 国产裸体视频网站| 国产高清不卡一区二区| 成人啪啪18免费游戏链接| 国产91精品露脸国语对白| 性xxxxxxxxx| 粉嫩av亚洲一区二区图片| 91传媒理伦片在线观看| yourporn久久国产精品| 在线观看国产免费视频 | www亚洲色图| 中文字幕精品—区二区四季| 91狠狠综合久久久久久| 国产精品久久二区二区| 国产免费久久久久| 夜夜爽夜夜爽精品视频| 日本三级视频在线| 日韩欧美精品网址| 中文字幕精品在线观看| 3751色影院一区二区三区| 国产av无码专区亚洲av| 精品日韩一区二区三区| 亚洲三区在线播放| 国产一区二区三区18| 欧美猛烈性xbxbxbxb| 理论片在线不卡免费观看| av最新在线| 国产精品扒开腿做爽爽爽视频| 欧洲午夜精品| 国产富婆一区二区三区| 台湾亚洲精品一区二区tv| 日韩欧美一区二区在线观看| 成人羞羞网站入口免费| 欧美日韩dvd| 久久精品一区| 999久久久精品视频| 北岛玲一区二区三区四区| 日韩女同一区二区三区| 一区二区三区在线观看欧美| 69视频免费在线观看| 欧美精品vⅰdeose4hd| 国产77777| 综合网中文字幕| 污污的网站在线看| 国产成人欧美在线观看| 午夜免费欧美电影| 日韩在线电影一区| 国产专区一区| 高潮一区二区三区| 91在线精品秘密一区二区| www.99re6| 欧美日韩色婷婷| 国产乱淫片视频| 国产视频亚洲视频| av中文字幕在线播放| 欧洲精品久久久| 日本在线视频一区二区三区| 日韩精品成人一区二区在线观看| 国产在线不卡| 欧美美女一级片| 久久综合狠狠综合| 久久久精品91| 在线不卡一区二区| 成黄免费在线| 欧美又大又粗又长| 大奶一区二区三区| 男插女免费视频| 美女一区二区三区| 精品少妇一区二区三区免费观| 亚洲伊人伊色伊影伊综合网| 91亚洲国产成人精品一区| 亚洲欧美色婷婷| 1区2区在线| 波多野结衣精品久久| 99精品全国免费观看视频软件| 成年人网站大全| 99精品在线免费| 国产一级大片在线观看| 欧美一区二区三区免费视频| 91视频在线观看| 国产99久久精品一区二区永久免费 | 欧美激情在线精品一区二区三区| av在线com| 国产精品一级片在线观看| 天天操天天摸天天舔| 欧美图区在线视频| 国产九九在线| 天堂а√在线8种子蜜桃视频| 欧美三级日韩三级国产三级| 午夜视频1000| 欧美激情小视频| 日本亚州欧洲精品不卡| 一区二区三区四区| 蜜桃久久精品一区二区| 亚洲黄色小说视频| 日韩欧美亚洲成人| 色婷婷av一区二区三| 欧美激情小视频| 狠狠一区二区三区| 青青青青草视频| caoporn国产精品| 日韩黄色一级大片| 亚洲精品福利免费在线观看| а√天堂8资源中文在线| 国产欧美日韩视频一区二区三区| 亚洲特色特黄| 国产十八熟妇av成人一区| 亚洲国产综合人成综合网站| 韩国av免费在线| 午夜精品国产精品大乳美女| 欧美午夜18电影| 日韩欧美精品在线观看视频| 久久久久久综合| 真实新婚偷拍xxxxx| 日韩在线观看免费高清| 91精品亚洲一区在线观看| 91成人在线视频观看| 国产+成+人+亚洲欧洲自线| 欧美福利电影网| 欧美一级淫片aaaaaa| 久久男人资源视频| 美国成人xxx| 国产亚洲精品网站| 久久精品免视看| 一区二区视频免费观看| 精品国偷自产在线| 1204国产成人精品视频| 亚洲中文字幕无码专区| 久久精品视频一区| 一个人看的www日本高清视频| 欧美另类极品videosbest最新版本 | 亚洲高清在线免费观看| 国产人成一区二区三区影院| 一级黄色大片免费| 色中色综合影院手机版在线观看| 国产伦理久久久久久妇女| 韩国日本在线视频| 亚洲婷婷综合久久一本伊一区 | 亚洲国产中文字幕久久网| 日本精品另类| 欧美人与动牲交xxxxbbbb| 久久免费视频一区|